代码之家  ›  专栏  ›  技术社区  ›  Tom

observable的mocking包含缺少的值

  •  -2
  • Tom  · 技术社区  · 5 年前

    我试图模仿可观察的返回类型。正如您在下面所看到的,configureTestSuite new Observable中的语句

    export class AgreementsModel {
        userAgreementId: number;
        agreementId: number;
        code: string;
        userAgreementStateId: number;
        userAgreementStateName: string;
        acceptanceWindowExpiry: Date;
        version: string;
        data: string;
        authoredById: number;
        authoredByName: string;
        authored: Date;
        issuedById: number;
        issuedByName: string;
        issued: Date;
      }
    
    
    
    
    import { AgreementsModel } from '../../agreements/models/agreements.model';
    
    
    
    export const AgreementModelMock: AgreementsModel = <AgreementsModel>{
    agreementId: 1,
    data: '<html> </html>'
    };
    
    
    
      configureTestSuite(() => {
        TestBed.configureTestingModule({
          imports: [SharedModule, FontAwesomeModule],
          declarations: [AgreementComponent, CustomScrollDirective],
          providers: [{ provide: UserService, useValue: mockUserService },
          { provide: AgreementsService, useValue:  new Mock<AgreementsService>({
               getOutstandingAgreements: () => new Observable<AgreementsModel[]>(),
               updateAgreement: () => Promise.resolve([])
             }).Object }]
        });
      });
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   AliF50    5 年前

    是的,您在那个实例中使用它作为类型。要模仿可观察的,使用 of

    import { of } from 'rxjs';
    ....
    getOutstandingAgreements: () => of(/*whatever value you want here for the mock*/);
    // if you want to be able to change the value of this observable, 
    you have to assign it to a behaviorSubject that will be a variable and  you can next on it