[英]Unit testing for service in Angular
I am trying to create unit testing for service I have import data service in spec file.我正在尝试为我在规范文件中导入数据服务的服务创建单元测试。
Then I am calling in beforeach Method.然后我调用 beforeach 方法。
providers: [
{ provide: dataservice}
],
I am getting this error我收到此错误
TypeError: Cannot read property 'setNumber' of undefined
this.dataService.setNumber(null);
As per the below user I added根据我添加的以下用户
const spyDataService = jasmine.createSpyObj('DataService', ['setNumber '])
in before each在每个之前
How to get rid of this error I am trying like below i am getting error and i modifed this into如何摆脱这个错误我正在尝试如下我收到错误,我将其修改为
it('should be create data service', () => {
expect(DataService).setNumber;
});
it('should be create data service', () => {
expect(service.setBCNumber).toHaveBeenCalledWith(null);
});
but still I am getting the same error.但我仍然遇到同样的错误。
You must provide the class instead of the instance.您必须提供类而不是实例。 if you want to provide a instance, you must use
useValue
like this:如果你想提供一个实例,你必须像这样使用
useValue
:
{
provide: DataService,
useValue: dataServiceMock
}
Also, expect is on an instance, not a class, hence此外,expect 是在一个实例上,而不是一个类上,因此
expect(DataService).setNumber;
should be应该
expect(dataService.setNumber).toHaveBeenCalledWith(null);
You also need to set the dataServiceMock to a mock instance like in the example:您还需要将 dataServiceMock 设置为模拟实例,如示例中所示:
let dataServiceMock: jasmine.SpyObj<DataService>;
beforeEach(() => {
const spyDataService = jasmine.createSpyObj('DataService', ['setNumber ']);
...
{
provide: DataService,
useValue: spyDataService
}
...
I recommand you the official angular site for testing: https://angular.io/guide/testing-services我推荐你官方 angular 站点进行测试: https : //angular.io/guide/testing-services
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.