【问题标题】:How to return different values from a mock service for two different tests?如何为两个不同的测试从​​模拟服务返回不同的值?
【发布时间】:2023-03-12 19:58:02
【问题描述】:

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

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);
  });
});

【问题讨论】:

标签: angular karma-jasmine


【解决方案1】:

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);
});

【讨论】:

  • @milanf,这个答案有什么问题?看起来像你问的那样。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2020-08-26
  • 1970-01-01
  • 2015-12-02
  • 2016-01-30
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
相关资源
最近更新 更多