【发布时间】:2020-09-09 20:21:57
【问题描述】:
如何在服务的规范文件中测试构造函数中是否调用了函数?例如:
@Injectable({
providedIn: 'root'
})
export class myService {
constructor() {
this.myFunction();
}
myFunction(){}
}
那么我怎样才能测试我的函数是否被调用了呢?
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.get(myService);
在 testbed.get 之前我无法窥探该服务,我尝试了:
it('should demonstrate myFunction called in constructor', () => {
const spy = spyOn (myService, 'myFunction');
const serv = new myService();
expect(spy).toHaveBeenCalled();
});
但这并不能说明没有调用 spy!
任何帮助将不胜感激。
【问题讨论】:
-
只是想知道,您要监视的方法是在您要测试的服务中定义的吗?如果是这种情况,您应该对函数内的任何调用进行存根。在要测试的东西中存根方法通常不是一个好主意,在这种特殊情况下,这不仅是一个坏主意,而且很可能不起作用。
-
感谢您的帮助,但不确定您的意思,但我在 slideshowp2 的帮助下完成了工作,
标签: angular unit-testing service jasmine karma-runner