2017-10-11 61 views
1

這是我的模塊和測試我想要的功能:摩卡嘲諷進口變量

import aVariable from 'aModule' 

export function afunction() { 
    //do something with the imported aVariable 
    //calculates result 
    return result 
}); 

我想嘲笑aVariable我摩卡單元測試。

import {afunction} from 'aModule.js' 

describe('Tests',() => { 
    it('should return expected',() => { 
    expect(afunction()).to.equal(expected); 
    }); 

這可能嗎?

UPDATE:

使用的巴別塔,聯控,插件我.babelrc:

{ 
    "env": { 
    "dev": { 
     "presets": ["es2015"] 
    }, 
    "test": { 
     "plugins": ["rewire"] 
    } 
    } 
} 

當我運行我的測試:

meteor test --meteortesting:mocha 

我得到這個錯誤:

TypeError: _getServiceUrl(...).__Rewire__ is not a function 

當我使用:

BABEL_ENV=test meteor test --meteortesting:mocha 

我得到:

While processing files with ecmascript (for target web.browser): 
/node_modules/rewire/lib/rewire.js:19:15: Filename must be a string 
+0

你看過[重新連接](https://www.npmjs.com/package/babel-plugin-rewire)babel的插件?它可以讓你輕鬆做到這樣的事情。另外還有[另一個rewire library](https://www.npmjs.com/package/rewire),如果你不使用babel,你可以使用它。 – robbymurphy

+0

我已經看到rewire,但我並沒有意識到你可以使用我和我的樣機進口,並使用Babel作爲一個轉譯器。 – Gobliins

回答

0

鑑於你已經安裝了巴貝爾,插件,ReWire的節點模塊,你可以做你的測試如下:

describe('Tests',() => { 
    it('should return expected',() => { 
    afunction.__Rewire__('aVariable', 'myStubVariableValue'); 
    expect(afunction()).to.equal(expected); 
    afunction.__ResetDependency__('aVariable'); 
}); 
+0

將盡快嘗試這個 – Gobliins

+0

@Gobliins爲您做了這項工作? – robbymurphy

+0

我試過了,但是在訪問'x .__ Rewire__'時出現了未定義的錯誤。我需要一些進口嗎? – Gobliins