给定回调函数如下:
myfunction('some value', function(){
//do something...
})
如何使用Jasmine
覆盖并测试它?它永远不会进入function(){...
回调中的流程。
由于
答案 0 :(得分:0)
在这种情况下,您需要创建(至少)两个单元测试:
myFunction
所以它可能看起来像这样:
it('should test myFunction', () => {
let spy = jasmine.createSpy();
let result = myFunction(spy);
expect(spy).toHaveBeenCalledWith(...args);
expect(result).toBeCorrectOrSomething();
});
it('should test the callback', () => {
let callback = createCallback();
let result = callback(...args);
expect(result).toBeCorrectOrSomething();
});
请注意,我说至少 2次测试,因为您可能需要测试每个函数的不同路径。
另请注意,这要求您能够在测试中访问回调,因此需要从正在创建的模块中公开回调。