如何从模拟服务中为两个不同的测试返回不同的值



当我在组件的初始测试中提供这个模拟服务时,我如何从它返回两个不同的值?我希望能够从模拟服务返回两个不同测试的两个不同值

describe('example', () => {
let component: ExampleComponent;
let fixture: ComponentFixture<ExampleComponent>;
let mockService: Partial<MockService>;
beforeEach(async(() => {
mockService = {
mockMethodSpy: jasmine.createSpy('mockMethod')
};
TestBed.configureTestingModule({
declarations: [ ExampleComponent],
imports: [],
providers: [
{ provide: MockService, useValue: mockService },
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ExampleComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should return true from mock service', () => {
expect(mockService.mockMethodSpy).toBe(true);
});
it('should return false from mock service', () => {
expect(mockService.mockMethodSpy).toBe(false);
});
});

spy可以动态配置。只要调用配置方法,它的行为就会与不同

it('should 1', () => {
mockService.mockMethodSpy.and.returnValue(12345);
expect(mockService.mockMethodSpy()).toBe(12345);
});
it('should 2', () => {
mockService.mockMethodSpy.and.callFake(() => 54321);
expect(mockService.mockMethodSpy()).toBe(54321);
});

最新更新