0
私のサービスでディスパッチメソッドをキャッチできません。私が理解する限り、Observable.subscribe()に必要なディスパッチがあるので、問題があります。ここでng2-redux(angular-redux)を使用したAngular 4.4テストサービス
はサービスです。
ここ@Injectable()
export class AuthUserBackendService extends BaseBackendDataService{
constructor(
private http: Http,
private tokenLoader: TokenLoaderBackendService,
private ngRedux: NgRedux<IAppState>,
private logger: LoggerService,
private errorService: BackendDataErrorsService
) {
super(http, tokenLoader, ngRedux, logger, errorService);
}
........
testMethod() {
// this dispatch ok
// this.ngRedux.dispatch({type:
ActiontionsBackendData.authUserBackendActions.startHttpRequestAuthUser});
Observable.of({Id: 'testId', Name: 'TestName'}).delay(100).subscribe(
(result) => {
const payload = {authUser: result};
// this dispatch I can't catch in test
this.ngRedux.dispatch({type: ActionsBackendData. authUserBackendActions.
receivedAuthUserHttpResponseSuccess, payload: payload});
});
}
}
がある私の.spec.ts私が最初のディスパッチのコメントを解除した場合、私は同じ1に0を期待得るので、「キャッチ・ディスパッチ・コールがカウント」の
let testService: AuthUserBackendService;
let mockState: any = {
authUserState: {
authUser: null
}
};
let mockRedux: NgRedux<IAppState> = new MockRedux(mockState);
describe('AuthUserBackendService',() => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
ToastyModule,
TranslateModule.forRoot(),
NgReduxModule,
LoggerModule,
MockBackendModule,
RouterTestingModule.withRoutes([]),
BackendDataModule,
CoreModule
],
providers: [
{provide: Router, useClass: RouterTestingModule},
{provide: NgRedux, useValue: mockRedux},
]
});
testService = TestBed.get(AuthUserBackendService);
});
it('should be created',() => {
expect(testService).toBeTruthy();
});
describe('testMethod()',()=>{
it('catch dispatch calls count',()=> {
const spy = spyOn(mockRedux, 'dispatch');
testService.testMethod();
expect(spy.calls.count()).toEqual(1);
});
});
});
テストは大丈夫ですが、購読エリアでのディスパッチができないことを意味します。なにが問題ですか?あなたの助言に多くの感謝。