小编mic*_*urs的帖子

vitest vi.spyOn 没有副作用吗?

我想使用“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)

javascript mocking typescript spyon vitest

5
推荐指数
1
解决办法
916
查看次数

createReadStream 的 TypeScript 定义在选项中不接受 {start: 90, end: 99 }

我刚刚更新到 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 并且我可以发出带有修复的拉取请求,但是- 同时 - 有没有办法强制这个调用通过编译器?

谢谢

stream node.js typescript

2
推荐指数
1
解决办法
1857
查看次数

标签 统计

typescript ×2

javascript ×1

mocking ×1

node.js ×1

spyon ×1

stream ×1

vitest ×1