2016-05-06 67 views
2

測試組件

我試圖對Jest的反應組件進行一些非常簡單的測試。我遇到了,因爲這條線的問題在我的組件文件使測試在測試時忽略無關輸入

import {} from './style.less'; 

這裏進口的頂部並不需要進行測試,並在理想情況下從測試忽略。

[NPM測試]

當測試通過npm test運行的結果我得到的迴應

FAIL tests/app_test.js ● Runtime Error SyntaxError: Unexpected token { in file 'client/components/app/style.less'.

Make sure your preprocessor is set up correctly and ensure your 'preprocessorIgnorePatterns' configuration is correct: http://facebook.github.io/jest/docs/api.html#preprocessorignorepatterns-array-string If you are currently setting up Jest or modifying your preprocessor, try jest --no-cache . Preprocessor: node_modules/jest-css-modules. Jest tried to the execute the following preprocessed code: //some .less code

但是,如果我註釋掉少進口線我的測試運行正常。

問題

我怎樣才能得到開玩笑跳過這行代碼或忽略此導入?

+0

檢查該解決方案http://stackoverflow.com/a/36137733/2765745 爲我工作。 –

回答

1

除了手動嘲諷測試頂部的.less文件之外,唯一可以讓我忽略較少文件的唯一方法是,例如,

jest.mock("../../src/styles.less",() => jest.fn()); 

是添加以下到的package.json:

"jest": { 
"moduleNameMapper": { 
    ".*\\.less$": "<rootDir>/pathToDummyFile/dummy.js" 
    } 
}, 

每當你的代碼試圖導入文件,少它將代替重定向進口來獲取一個空的虛擬文件,這將避免您遇到的意外令牌錯誤。

+0

這工作。特別提及''反應文檔指出,如果我們指向一個文件,那麼應該使用'',它解析爲'dummy.js'文件的絕對路徑。我把這個配置放到我的'jest.config.js'文件中。 –

1

如果你仍然有這個問題,請嘗試以下配置添加到您的jest.config.json文件:

"transform": { "^.+\\.(css|less)$": "./styleMock.js" }

在這裏,您styleMock.js你創建一個transformer這將改變你的.less文件,這樣:

module.exports = { process() { return '' } }

+0

這不起作用。通過這樣做,Jest抱怨React組件中的導入語句。 '''從'../App'導入應用程序' ^^^^^^ SyntaxError:意外令牌導入''' –