2016-09-22 103 views
0

我正在編寫一個Jest集成測試來測試我的服務器。下面是我的測試:運行包含導入CoffeeScript文件的Jest測試時的SyntaxError

import { app, port } from '../server' // the other lines are not so important 
... 

當運行jest這引發了一個錯誤:

__tests__/graphql.test.js 
    ● Test suite failed to run 

    <project folder>/node_modules/papercut/lib/papercut.coffee:3 
    {FileStore, S3Store, TestStore } = require('./store') 
            ^
    SyntaxError: Unexpected token = 

我需要在我的玩笑測試server.js,此文件需要upload.js這個文件需要叫papercut節點模塊。問題是,它是用CoffeeScript編寫的,而不是純JS。

在開始時我有這個錯誤:Jest: cannot find module required inside module to be tested (relative path)。我加coffeepackage.jsonjest配置這樣的:

"jest": { 
    "moduleFileExtensions": ["js", "json", "jsx", "node", "coffee"] 
}, 

但現在我有我上面描述的錯誤。

我該如何處理?

+0

也許看看這個[問題]的「第二次嘗試」部分(http://stackoverflow.com/questions/27123072/jest-with-coffeescript-jsx),因爲它顯示瞭如何編譯咖啡在進口 –

回答

0

我最終做兩件事固定它:

  • 增加對咖啡文件的預處理器(如在其他問題)
  • 加入"preprocessorIgnorePatterns": []我的玩笑配置。 Jest忽略node_modules/中的.coffee文件,如果你不明確地告訴它你也想編譯這些文件。
1

您將需要爲Jest設置preprocessor,因爲它不能處理咖啡腳本。

這已經回答了before,所以我不會詳細討論。 es6作品「開箱即用」的原因是因爲jest-babel已經被提供,因爲es6在大多數React代碼庫中都是事實上的。

+0

我試圖實現我自己的預處理器,現在我得到這個錯誤:https://gist.github.com/serge1peshcoff/6823cba9f464ea7e3f920af2d895bb69。看起來像這個軟件包在CoffeeScript中使用了一些ES6語法或類似的東西。 – serge1peshcoff

+0

奇怪的是它本身沒有被編譯,剪紙的'index.js'本身就需要'coffee-script',就像這樣:'require('coffee-script'); module.exports = require('./ lib/papercut');' – serge1peshcoff