我为我的应用程序运行了Jest/Flow安装程序。我们切换到了TypeScript,并且我的所有测试都打破了。我将所有内容转换为.ts和.test.ts并修复了所有错误。出于某种原因,我的__mocks__
已不再使用。 (我不得不嘲笑一些模块失败的汽车模块)jest打字稿不使用__mocks__ for node_modules
例如,下面的代码用于模拟电子任何时候它是必需的,并允许代码调用模拟对话框,所以我可以检查错误案例报告错误。由于我转换为TypeScript,因此在测试中任何时候点击require ("electron")
,它都会失败,说明remote是未定义的。
前)aFile.test.ts
import reportError from "../aFile.ts";
const { dialog } = require ("electron").remote;
describe ("reportError",() =>
{
test ("creates dialog",() =>
{
const title = "foo";
const message = "bar";
reportError (title, message);
expect (dialog.showErrorBox).toHaveBeenLastCalledWith (title, message);
});
});
前)aFile.ts
const { dialog } = require ("electron").remote;
export default function reportError (title: string, message: string)
{
dialog.showErrorBox (title, message);
}
前)__mocks__/electron.js
(node_modules的兄弟姐妹)
module.exports = { remote: { dialog: { showErrorBox: jest.fn() } } };
我知道某些模拟不正在使用,因为SE当我以下内容添加到任何失败的.test.ts文件,它开始通过:
jest.mock ("electron",() => { return { remote: { dialog: { showErrorBox: jest.fn() } } } });
为什么不打字稿找到我__mocks__
?
我的猜测是,'需要(“电子”)'正从开这个玩笑解析器掩盖,当笑话吊进口未检测。这可能需要深入挖掘笑话的来源。 –
有同样的问题:( – Jonathan
我能解决这个问题,我会后我的解决办法明天 – austinrulezd00d