我想使用“vi.spyOn”来监视对模块中 sideEffect 函数的调用,以确保模块中的另一个函数正在调用。
我在 jest 上这样做没有问题,但它似乎在 vitest 上不起作用。
这是一个简化的例子
aModule.ts
export function a() {
return sideEffect();
}
export function sideEffect() {
return 'a';
}
Run Code Online (Sandbox Code Playgroud)
这是测试文件:
import { vi, expect, test } from 'vitest';
import * as aModule from '../src/aModule';
test('expect "sideEffect" to be called at least once', async () => {
const sideEffectSpy = vi.spyOn(aModule, 'sideEffect').mockReturnValue('b');
const aSpy = vi.spyOn(aModule, 'a');
const res = aModule.a(); // This function calls sideEffect internally.
expect(res).toBe('b'); // This fails - it returns 'a' so …
Run Code Online (Sandbox Code Playgroud) 我刚刚更新到 TypeScript 1.6.2 并且我对 createReadStream() 的调用将无法编译,因为 node.d.ts 中的类型定义在 options 参数中不期望 'start' 和 'end' 。
var st = fs.createReadStream(logFile , {start: rstart, end: rend } );
Run Code Online (Sandbox Code Playgroud)
会得到这个错误:
error TS2345: Argument of type '{ start: number; end: number; }' is not assignable to parameter of type '{ flags?: string; encoding?: string; fd?: string; mode?: string; bufferSize?: number; }'.
Run Code Online (Sandbox Code Playgroud)
由于文档确实提到这些作为有效选项(https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options)我确实相信应该修复 node.d.ts 并且我可以发出带有修复的拉取请求,但是- 同时 - 有没有办法强制这个调用通过编译器?
谢谢