2015-12-08 88 views
2

模塊我正在寫使用摩卡和打字稿測試......這裏有一個簡單的例子:導入「全球」與打字稿

import {assert} from 'chai'; 
import Greeting from '../../../src/component/greeting/greeting'; 

describe('Greeting component', function() { 
    it('should greet correctly', function() { 
     let greeting = new Greeting(); 
     assert(greeting.greeting === 'Hello World', 'should express the correct greeting'); 
    }); 
}); 

我可以看到這些被正確編譯。我將它們作爲common-js模塊輸出,並使用system-js作爲瀏覽器內加載器。

System.import('component/greeting/greetingSpec.js') 
    .catch(console.log.bind(console)) 
    .then(function() { 
     mocha.run(); 
    }) 

我想創建其中列出所有的「規範」文件的文件:

import * as greeting from './greeting/greetingSpec'; 
import * as foo from './greeting/fooSpec'; 

然而,打字稿編譯器可以看到,這些進口的未使用的,因此不包括他們在JS輸出中。

如何定義一個'入口點'給我可以通過system-js加載的測試?

回答

1

嘗試使用副作用,只import

import './greeting/greetingSpec'; 
import './greeting/fooSpec'; 

這不會被省略。有關更多信息,請參閱this discussion

+0

完美 - 謝謝你:-) – ColinE

0

您的代碼

import * as greeting from './greeting/greetingSpec'; 
import * as foo from './greeting/fooSpec'; 

然而,打字稿編譯器可以看到,這些進口的未使用的,因此不包括他們在JS輸出。

這是一個功能,以支持例如延遲加載:https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html

解決方法:

import * as greeting from './greeting/greetingSpec'; 
import * as foo from './greeting/fooSpec'; 
// use the imports in a dummy fashion to enforce that they get loaded 
let _greeting = greeting; 
let _foo = foo; 

I do this all the time here :-)

+0

謝謝,那有效,但[接受的答案](http://stackoverflow.com/a/34189916/249933)顯示一個更優雅的方法。 – ColinE