Angular 测试:使用 Any 数据类型模拟 类 和服务
Angular Test: Use Data Type Any to Mock Classes and Services
我在没有 TestBed 的情况下使用 Fake 类 模拟服务。
使用具有以下 : any
数据类型的 Mock 是一种好习惯吗?
如果不是,我会收到以下错误,缺少 items/parameters.
我可以使用 spyOn,但它需要 TestBed,并且我试图避免摆脱所有可执行文件 -运行 时间错误,'with injectable import not found' with testBed。
https://medium.com/angular-in-depth/angular-testbed-considered-harmful-3f91f647d1fd
https://dev.to/angular/unit-testing-in-angular-to-testbed-or-not-to-testbed-3g3b
class ConfigMgmtServiceMock {
modifyLkDocumentDiscardReasonPost() : Observable<any> {
let data = 'test';
return of(data);
};
}
let configMgmtServiceMock: any = new ConfigMgmtServiceMock();
let snackBarMock : any = new SnackBarMock();
beforeEach(() => {
configMgmtServiceMock = new ConfigMgmtServiceMock();
snackBarMock = new SnackBarMock();
component = new DocumentDiscardLookupEditorComponent(null, configMgmtServiceMock, snackBarMock);
component.gridRef = new GridMock() as any;
});
你可以使用any
,它带来的唯一问题 - 类型安全的松散,因此如果modifyLkDocumentDiscardReasonPost
的签名已更改,例如它不会return 不再承诺 - 那么就没有打字稿错误了。
如果你想模拟 类 并避免失去类型安全,你可以考虑使用 ng-mocks,它允许创建模拟形状并同时保持类型安全,所以如果有人更改了类型 - 打字稿也会让开发人员在模拟中了解这一点。
beforeEach(() => MockBuilder(DocumentDiscardLookupEditorComponent)
.mock(ConfigMgmtService, {
modifyLkDocumentDiscardReasonPost: () => {
let data = 'test';
return of(data);
},
})
.mock(SnackBar, {
something: 'in-snack-bar',
})
});
我在没有 TestBed 的情况下使用 Fake 类 模拟服务。
使用具有以下 : any
数据类型的 Mock 是一种好习惯吗?
如果不是,我会收到以下错误,缺少 items/parameters.
我可以使用 spyOn,但它需要 TestBed,并且我试图避免摆脱所有可执行文件 -运行 时间错误,'with injectable import not found' with testBed。
https://medium.com/angular-in-depth/angular-testbed-considered-harmful-3f91f647d1fd
https://dev.to/angular/unit-testing-in-angular-to-testbed-or-not-to-testbed-3g3b
class ConfigMgmtServiceMock {
modifyLkDocumentDiscardReasonPost() : Observable<any> {
let data = 'test';
return of(data);
};
}
let configMgmtServiceMock: any = new ConfigMgmtServiceMock();
let snackBarMock : any = new SnackBarMock();
beforeEach(() => {
configMgmtServiceMock = new ConfigMgmtServiceMock();
snackBarMock = new SnackBarMock();
component = new DocumentDiscardLookupEditorComponent(null, configMgmtServiceMock, snackBarMock);
component.gridRef = new GridMock() as any;
});
你可以使用any
,它带来的唯一问题 - 类型安全的松散,因此如果modifyLkDocumentDiscardReasonPost
的签名已更改,例如它不会return 不再承诺 - 那么就没有打字稿错误了。
如果你想模拟 类 并避免失去类型安全,你可以考虑使用 ng-mocks,它允许创建模拟形状并同时保持类型安全,所以如果有人更改了类型 - 打字稿也会让开发人员在模拟中了解这一点。
beforeEach(() => MockBuilder(DocumentDiscardLookupEditorComponent)
.mock(ConfigMgmtService, {
modifyLkDocumentDiscardReasonPost: () => {
let data = 'test';
return of(data);
},
})
.mock(SnackBar, {
something: 'in-snack-bar',
})
});