Lev*_*Lev 13 jasmine karma-runner angular
鉴于这个简单的组件:
import { Component} from '@angular/core';
@Component({
selector: 'app-component'
})
export class AppComponent {
foo() {
this.bar();
}
bar() {
console.log('hello');
}
}
Run Code Online (Sandbox Code Playgroud)
为什么以下测试不会验证bar我打电话时调用的内容foo
describe('AppComponent', () => {
let component: AppComponent;
beforeEach(() => {
component = new AppComponent();
}
it('should foobar', () => {
component.foo();
spyOn(component, 'bar');
expect(component.bar).toHaveBeenCalled();
})
}
Run Code Online (Sandbox Code Playgroud)
我得到了失败的测试:
Expected spy bar to have been called.
Run Code Online (Sandbox Code Playgroud)
Ted*_*rne 24
您需要在调用方法之前设置间谍.Jasmine使用wrap函数来确定它们何时被调用以及它们被调用的内容.在调用spied on方法之前必须先包装该方法以捕获信息.尝试更改您的测试以匹配以下内容:
it('should foobar', () => {
spyOn(component, 'bar');
component.foo();
expect(component.bar).toHaveBeenCalled();
})
Run Code Online (Sandbox Code Playgroud)
it("should foobar", () => {
const spy = spyOn(component, "bar");
component.foo();
expect(spy).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12952 次 |
| 最近记录: |