私は次の方法を持っています
protected create (): void {
this.projectService.getPartsList(this.project.id, this.project.versionId).subscribe((geometry: Geometry) => {
this.projectService.createNewProject({
data: {
parts: [ geometry.data.parts ]
},
importedVersions: [{
assetClass: '3dgeometry',
versionId: this.project.versionId
}],
modelOfferingId: this.project.modelOfferingId,
name: this.projectName
});
});
}
および次の単体テスト: (ProjectService は、その中のすべてのメソッドに対してスパイを返すモック クラスを使用していることに注意してください)
describe('create()', () => {
it('should call getPartsList from projectService and then call createNewProject when the resolves passing the payload', () => {
let payload: any = {
data: {
parts: []
},
importedVersions: [{
assetClass: '3dgeometry',
versionId: ''
}],
modelOfferingId: '',
name: 'Test Project'
};
modalCreateAdvancedInstance.projectName = payload.name;
modalCreateAdvancedInstance.project = {
modelOfferingId: '',
versionId: ''
};
modalCreateAdvancedInstance.create();
expect(projectService.getPartsList).toHaveBeenCalled();
expect(projectService.createNewProject).toHaveBeenCalledWith(payload);
});
});
メソッドはスパイを返すだけで をcreateNewProject
呼び出さないため、メソッドが呼び出されることはありません。getPartsList が .subscribe を呼び出すオブザーバブルを返すように、これをモックアップするにはどうすればよいですか。getPartsList
.subscribe()