我试图用typescript和jest正确地模拟我的i18n文件,但当我运行测试时,我总是得到这个错误:
TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
__tests__/__mock__/react-i18next.ts:1:1 - error TS1208: All files must be modules when the '--isolatedModules' flag is provided.
1 jest
我试图使用jest来模拟整个对象(ColumnApi来自ag-grid),然后通过参数传递给某个函数,该函数从ColumnApi调用方法"getAllColumns“。我不在乎"getAllColumns“是如何工作的,但我希望它返回一些特定的列数组(Column[])。如何创建此对象/模拟以同时实现:
通过参数将其传递给某个函数,该函数要求该对象的一个函数的ColumnApi类型模拟返回值。
测试:
describe("test", () => {
// my fruitless tries to create the mock / ob
显然,mock.mockRestore()没有恢复使用jest.mock()创建的模拟的原始实现。
// a.js
export default class A {}
// b.js
import A from './a';
export default class B extends A {}
// test.js
import A from './a';
import B from './b';
jest.mock('./a');
jest.mock('./b');
const b = new B(
使用Jest模拟第三方库中的方法的问题。所以我有一个像这样实现的组件 import {foo} from 'bar'
function Component() {
// use foo somewhere in the component
} 在测试中我试着模仿foo,所以 import {foo} from 'bar'
jest.mock('bar')
test('test', () => {
foo.mockReturnValue(...)
}) 这工作得很好,但是一旦我将jest.mock('bar
过去有一个关于这个问题的问题,但没有人回答:
我想为testdouble-jest创建一个类型,但其导出函数中的第二个参数是全局jest实例,它在@types/jest中声明为顶级声明的命名空间:
declare namespace jest {
mock(): something
// ...
}
编辑:下面是类型:
如何在test-double.d.ts声明中引用这个全局对象?我的声明如下,但取得了部分成功:
/// <reference types="jest" />
// do i actually need the above directive