断言 RxJS 函数返回

问题描述 投票:0回答:1

我正在努力断言某些 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({});
}
javascript typescript rxjs
1个回答
-1
投票

正如评论中提到的,我们不需要测试

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({});
};

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.