微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

诗农单元测试如何对将调用异步函数然后调用将返回回调的函数进行单元测试?

如何解决诗农单元测试如何对将调用异步函数然后调用将返回回调的函数进行单元测试?

我有一个需要测试的函数,它首先调用一个异步函数,一旦收到响应,然后返回一个调用一个函数将回调的承诺..下面是我需要为其编写测试用例的函数:>

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?