1
我使用它來測試該服務是否將某項添加到可觀察的錯誤流中。單元測試正在饋送的可觀察流的正確方法
it('can be subscribed for errors',() => {
let testError = new Error('Some error.');
let called = false;
let subscription = service.onError.subscribe(error => {
called = true;
expect(error).toEqual(testError);
});
/// This makes an error to be added to onError stream
service.setError(testError);
expect(called).toEqual(true);
});
我使用called
變量來確保實際調用訂閱回調。否則,測試會在不應該時通過。但這對我來說並不合適。另外,如果流是異步的,它將不起作用。
這是一個很好的測試方法嗎?如果沒有,如何正確地做到這一點?
編輯:這是正在測試的類。實際上它在打字稿中。
import { ReplaySubject } from 'rxjs/Rx';
export class ErrorService {
private error: Error;
public onError: ReplaySubject<Error> = new ReplaySubject<Error>();
constructor() {
}
public setError = (error: Error) => {
this.error = error;
console.error(error);
this.onError.next(error);
}
public getError() {
return this.error;
}
public hasError() {
return !!this.error;
}
}
我想知道你是否應該添加一個標籤來表示你正在使用的編程語言... – GhostCat
@GhostCat好的,謝謝 –
你可以發佈你正在測試的方法嗎? – KwintenP