我爲我的應用程序運行了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