angular - 如何为两个不同的测试从模拟服务返回不同的值?
问题描述
当我在组件的初始测试中提供它时,如何从这个模拟服务返回两个不同的值?我希望能够从模拟服务中为两个不同的测试返回两个不同的值
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);
});
});
解决方案
间谍可以即时配置。只需调用配置方法,它的行为就会不同
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);
});
推荐阅读
- azure - Azure 容器注册表 - 每 Gb 或缓存图像 TTL 的价格
- caching - 较大的直接映射缓存是否会降低未命中率
- javascript - webpack/node 中是否有相当于文件“包含”的东西?
- reactjs - React 如何设置滚动点 onScroll 事件
- javascript - 如何修改原始 html:printjs 中的表结构
- python - 如何在python中使用正则表达式在多个句子的一段中搜索模式?
- python - 多个线程同时处理相同的数据
- r - 无法安装fansi包
- vba - 在 VBA Word 中隐藏/显示特定页面
- reactjs - 为什么在 React 中 State 比 Link 更受欢迎?