2016-08-18 34 views
0

我有一個簡單的測試,我想測試一個服務,它是前端的方法。在後端我使用require()來獲取模塊,但前端使用webpackimport使用`import`語句而不是`require`調用單個摩卡測試

我的測試:

const testee = require('../network-template.service'); 

describe('getTemplates', function() { 
    it('shall return templates from server', function (done) { 
     console.log(testee); 
     done(); 
    }); 
}); 

我的測試類:

import fetch from 'isomorphic-fetch'; 

const ENDPOINT = 'http://localhost:3000/api/network-templates'; 

class NetworkTemplateService { 
    getTemplates(){ 
     return fetch(ENDPOINT, { 
      method: 'GET', 
      headers: { 
       'Accept' : 'application/json' 
      }, 
      body: JSON.stringify(ports) 
     }) 
      .then(response => ({response})) 
      .catch(error => ({error})); 
    } 

有一個簡單,快捷的方式如何運行這個測試?我喜歡在後端如何編譯,無需任何設置即可立即運行所有測試。

+0

如果你想使用進口和在前端,我認爲你必須測試你的組件預編譯,所以你可以測試一下。 –

回答

2

巴貝爾有着require()掛鉤,可用於在飛行transpile代碼,所以你不必運行測試之前,做任何設置。

要安裝:

npm i babel-register --save-dev 

要使用它,你可以在你mocha.opts文件中加入這一行:

--compilers js:babel-register 

或者,您可以將其添加爲命令行標誌。如果你有一個test腳本在package.json ...

"scripts": { 
    "test" "./node_modules/.bin/mocha --compilers js:babel-register" 
} 
+0

thx,它工作得很好。我正在使用Jetbrains PhpStorm。爲了達到這個目的,我不得不在全局安裝'babel-register',而不是'mocha.opts'我在'Run/Debug configurations'中使用了'More Mocha options'。 – zatziky

+0

我明白了。我使用IntelliJ進行JavaScript開發,我也喜歡通過IDE運行我的測試。根據我的經驗,'mocha.opts'文件受到尊重,所以你可以按照你想要的方式做到這一點。我傾向於'mocha.opts'的原因是我也喜歡在命令行中隨時使用'mocha'二進制運行我的測試。 –

0

也許將此行添加到您的package.json並使用babel進行預編譯。

..."scripts": { 
     "test":"mocha --compilers js:babel-core/register ./test/example_test.js" 
}...