3

私は次の方法を持っています

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()

4

0 に答える 0