3
我有幾個需要服務的測試。我正在使用名爲UserServiceStub
的存根服務,我在我正在測試的SettingsComponent
中注入。我重置了每個測試中的UserServiceStub,但是測試是異步執行的,所以當我重置我的UserServiceStub(這是一個注入類和單例類)時,其他測試已經初始化它。我的測試是弱的,並聲稱是錯誤:-(如何做同步測試或不共享存根服務?
我願做同步測試或每個測試不同的UserServiceStub實例,但我不知道該怎麼做...
我試着要定義在UserServiceStub的方法稱爲reset()
一個重置存根服務,但由於它的異步它不工作而且,我在afterEach()
方法執行時,TestBed.resetTestEnvironment()
方法,但它也不起作用
我reset()
方法:
reset() {
this.user = { IBAN: '', SWIFT: '', paypal: '', app_idioma: '' };
}
- 我使用的屬性稱爲
user
並已被其他測試 覆蓋
我beforeEach()
方法是這樣的一個
let fixture: ComponentFixture<SettingsComponent>;
let settingsComponent: SettingsComponent;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [SettingsComponent],
imports: [],
providers: [
TranslateService,
AppService,
{ provide: MockBackend, useClass: MockBackend },
{ provide: HttpToolsService, useValue: HttpToolsServiceStub },
{ provide: BaseRequestOptions, useClass: BaseRequestOptions },
{ provide: UserService, useClass: UserServiceStub } // My stub UserService
]
});
fixture = TestBed.createComponent(SettingsComponent);
settingsComponent = fixture.componentInstance;
});
測試:
it('#updateSettings should doesn\'t update the user\'s settings when is wrong', fakeAsync(
inject([UserService, HttpToolsService, MockBackend],
(userService: UserServiceStub, httpToolsService: HttpToolsService, mockBackend: MockBackend) => {
userService.reset(); // It does not work...
userService.isError = true;
// However, I have reseted my user in UserServiceStub,
// this returns false because settingsComponent.getSettings().IBAN is actually 'XXX'
// instead of '' (empty) how it has to be
expect(settingsComponent.getSettings().IBAN).toBe('');
}))
);
我希望你的回答,如果你有任何問題只是問。
感謝:-)
謝謝你,但它不是我所需要的。每個'user'在每個測試中都有不同的信息,但是當測試完成時,UserServiceStub保存最新測試的信息,並且在執行測試時,在其他測試中,UserServiceStub發生了變化,我需要每個測試都有一個不同的UserServiceStub。我希望你明白。 –