我有2个函数,其中一个调用另一个,另一个返回一些东西,但是我无法进行测试。
使用expect(x).toHaveBeenCalledWith(someParams);
期望使用间谍,但是我不知道如何在同一文件中监视某个函数...
错误::可能是间谍,但得到了功能。
用法:Expect()。toHaveBeenCalledWith(... arguments)
Example.ts
doSomething(word: string) {
if (word === 'hello') {
return this.somethingElse(1);
}
return;
}
somethingElse(num: number) {
var x = { "num": num };
return x;
}
Example.spec.ts
fake = {"num": "1"};
it('should call somethingElse', () => {
component.doSomething('hello');
expect(component.somethingElse).toHaveBeenCalledWith(1);
});
it('should return object', () => {
expect(component.somethingElse(1)).toEqual(fake);
});
答案 0 :(得分:1)
在您的Example.spec.ts中,只需添加spyOn(component, 'somethingElse');
作为测试it('should call somethingElse ...
的第一行:
fake = {"num": "1"};
it('should call somethingElse', () => {
// Add the line below.
spyOn(component, 'somethingElse');
component.doSomething('hello');
expect(component.somethingElse).toHaveBeenCalledWith(1);
});
it('should return object', () => {
expect(component.somethingElse(1)).toEqual(fake);
});
在toHaveBeenCalledWith
之前(根据Jasmine documentation),expect方法需要一个Spy作为参数。