我正在努力断言某些 RxJS 函数的响应
of
和 throwError
。
// example.test.ts
import { equal } from "assert";
import { example } from "./example";
import { of, throwError } from "rxjs";
const errorObservable = exampleThrow(new Error("Test"));
const emptyObservable = exampleOf(new Error("Test"));
equal(errorObservable, new Observable(() => new Error("Test")); // Invalid
equal(emptyObservable, new Observable(() => {})); // Fails
equal(errorObservable, new Observable(throwError(() => error)); // Fails
equal(emptyObservable, of({})); // Fails
// example.ts
import { of, throwError } from "rxjs";
const export exampleThrow = (error) => {
return throwError(() => error);
}
const export exampleOf = (error) => {
return of({});
}
正如评论中提到的,我们不需要测试
rxjs
函数,它们已经在库内部进行了内部测试,我们只需检查返回值,我只需订阅输出并验证它们,下面的工作示例!
import { equal } from 'assert';
import { example, exampleOf, exampleThrow } from './example';
import sinon from 'sinon';
example().subscribe({
error: (response) => {
equal(response.message, 'Test');
},
});
exampleThrow(new Error('qwerty')).subscribe({
error: (response) => {
equal(response.message, 'qwerty');
},
});
exampleOf().subscribe({
next: (response) => {
equal(Object.keys(response), 0);
},
});
// example.ts
import { throwError, of } from 'rxjs';
export const example = () => {
return throwError(() => new Error('Test'));
};
export const exampleThrow = (error) => {
return throwError(() => error);
};
export const exampleOf = (error) => {
return of({});
};