如何解决诗农单元测试如何对将调用异步函数然后调用将返回回调的函数进行单元测试?
我有一个需要测试的函数,它首先调用一个异步函数,一旦收到响应,然后返回一个调用另一个函数将回调的承诺..下面是我需要为其编写测试用例的函数:>
const bookService = require('./bookService');
const libraryService = require('./libraryService');
const findBook = (bookName) => {
libraryService.getAllBooks().then(res => {
if(res.length > 0){
//find book code based on bookName in res....
bookCode = ...;
const url = bookService.getBookUrl(bookCode) + '/booksystem?bookcode=' + bookCode;
return new Promise((resolve,reject) => {
bookService.InfoRequest(bookCode,url,{},'GET',res => {
if(res.error){
reject(res);
}else{
//Do things here...
resolve(res)
}
})
})
}
})
}
我试过存根 bookService.InfoRequest 方法,但它一直给我 1 个未捕获的异常说:
SyntaxError: The URL '/booksystem?bookcode=' is invalid..
我尝试控制台记录代码中的 url,它打印出来没问题。但是单元测试用例给了我未捕获的异常。
我正在使用 Ava,所以我尝试了这样的操作:
test('find Book positive test',t => {
sandBox.stub(libraryService,'getAllBooks').resolves([
{Name : 'book1',Code : 'b1'},{Name : 'book2',Code : 'b2'},{Name : 'book3',Code : 'b3'}
]);
const testRes = [
{bookCode: 'b1',price : 10},{bookCode: 'b2',price : 20},{bookCode: 'b3',price : 30}
];
const stubBookService = sandBox.stub(bookService,'InfoRequest');
stubBookService.callsFake((bookCode,method,callback) => {
callback(testRes);
})
api.findBook('book1');
})
api 是我正在测试的模块。同样在这种情况下,断言的最佳方法是什么?谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。