作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 rxjs 的 lastValueFrom 方法的 Controller ,我想模拟该方法,这样实际的方法就不会被调用。我的 Controller 代码是:
async doSomething(request) {
...
const data = await lastValueFrom(
...
);
...
}
为了测试,我尝试了多种方式,即:
import rxjs from 'rxjs';
jest.spyOn(rxjs, 'lastValueFrom').mockReturnValueOnce(
new Promise((resolve, reject) => {
resolve(true);
}),
);
// This gives me error: Cannot spyOn on a primitive value; undefined given
import { lastValueFrom } from 'rxjs';
lastValueFrom = jest.fn().mockReturnValueOnce(
new Promise((resolve, reject) => {
resolve(true),
);
// This gives me error: Cannot assign to 'lastValueFrom' because it is an import.
import rxjs from 'rxjs';
rxjs.lastValueFrom = jest.fn().mockReturnValue(
new Promise((resolve, reject) => {
resolve(true);
}),
);
// This gives me error: Cannot set property 'lastValueFrom' of undefined
最佳答案
如果您使用的是 TypeScript,恐怕唯一的方法是模拟导入 'rxjs'
。
jest.mock('rxjs', () => {
const original = jest.requireActual('rxjs');
return {
...original,
lastValueFrom: () =>
new Promise((resolve, reject) => {
resolve(true);
}),
};
});
import { of, lastValueFrom } from 'rxjs';
test('test', () => {
lastValueFrom(of(1)).then((val) => {
expect(val).toStrictEqual(true);
});
});
现场演示:https://stackblitz.com/edit/node-6vjbxb?file=index.spec.ts
只用 ES* 似乎你可以做到:How to spy on a default exported function with Jest?
关于typescript - 开玩笑 mock rxjs 的 lastValueFrom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71624825/
我有一个使用 rxjs 的 lastValueFrom 方法的 Controller ,我想模拟该方法,这样实际的方法就不会被调用。我的 Controller 代码是: async doSomethi
我正在使用开玩笑和 typescript 。我在服务文件中有这个导出的函数...... export async functionprocessData( data: MyDataI, ): Pr
当我运行 npm start 或 react-native start 时,我收到了这个警告: jest-haste-map: @providesModule naming collision:
我是一名优秀的程序员,十分优秀!