В одном из моих файлов модульных тестов мне приходится несколько раз имитировать один и тот же сервис с разными макетами.
import { MyService } from '../services/myservice.service';
import { MockMyService1 } from '../mocks/mockmyservice1';
import { MockMyService2 } from '../mocks/mockmyservice2';
describe('MyComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
MyComponent
],
providers: [
{ provide: MyService, useClass: MockMyService1 }
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MapComponent);
mapComponent = fixture.componentInstance;
fixture.detectChanges();
});
describe('MyFirstTest', () => {
it('should test with my first mock', () => {
/**
* Test with my first mock
*/
});
});
describe('MySecondTest', () => {
// Here I would like to change { provide: MyService, useClass: MockMyService1 } to { provide: MyService, useClass: MockMyService2 }
it('should test with my second mock', () => {
/**
* Test with my second mock
*/
});
});
});
Я вижу, что функция overrideProvider существует, но мне не удалось использовать ее в мой тест. Когда я использую его в «этом», провайдер не меняется. Мне не удалось найти пример вызова этой функции. Не могли бы вы объяснить мне, как им правильно пользоваться? Или у вас есть другой способ сделать это?