找不到一个对象来监视start()
spyOn could not find an object to spy upon for start()
我正在使用angular-cli测试框架。
在我的组件中,我使用了'ng2-slim-loading-bar'节点模块。
submit(){
this._slimLoadingBarService.start(() => {
});
//method operations
}
现在,当我测试这个组件时,我已经应用了spyOn这个服务作为:
beforeEach(() => {
let slimLoadingBarService=new SlimLoadingBarService();
demoComponent = new DemoComponent(slimLoadingBarService);
TestBed.configureTestingModule({
declarations: [
DemoComponent
],
providers: [
{ provide: SlimLoadingBarService, useClass: SlimLoadingBarService}
],
imports: [
SharedModule
]
});
});
it('should pass data to servie', () => {
spyOn(slimLoadingBarService,'start').and.callThrough();
//testing code,if I remove the above service from my component, test runs fine
});
但是它不工作。
抛出以下错误:
无法找到一个对象来监视start()
使用let声明slimLoadingBarService,您将其范围限制为beforeEach回调范围。用var声明,或者更好,在适当的describe()块之后声明,并在beforeEach回调函数中设置其内容:
describe("some describe statement" , function(){
let slimLoadingBarService = null;
beforeEach( () => {
slimLoadingBarService=new SlimLoadingBarService();
});
it('should pass data to service', () => {
spyOn(slimLoadingBarService,'start').and.callThrough();
//testing code,if I remove the above service from my component, test runs fine
});
});
这是由于beforeEach
未声明所致在angular 10之后更新了语法
beforeEach(() => {
slimLoadingBarService = TestBed.inject(SlimLoadingBarService);
});
before angular 10
beforeEach(() => {
slimLoadingBarService = TestBed.get(SlimLoadingBarService);
});
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Module.start()已激发两次
- Node.js通过scp监视传入归档的目录
- js,对象's状态监视
- Jasmine单元测试在监视服务方法时失败
- 多重配置期间的webpack监视选项
- AngularJS指令监视父级大小的更改
- "TypeError:t.start未定义”;,在fullcalendar.min.js中,同时在我的网站上使
- 制作Easing Slider Start横幅取决于一周中的哪一天
- 在Firebug控制台中监视javascript命名空间变量
- 从指令链接函数监视控制器作用域
- 如何使用jasmine节点监视依赖模块内部的方法
- 监视JavaScript输出,例如console.log()
- 使用jquery和lodash限制监视的输入
- 我应该如何在backbone.mariente中测试/监视此类事件
- 如何监视jQuery AJAX请求
- 在执行JS脚本后监视对DOM的更改
- 为什么AngularJS$scope.watch()在我告诉它监视数组时会停止工作
- 找不到一个对象来监视start()