2015-10-01 40 views
0

我正在嘗試爲使用Dojo 1.10.4的代碼編寫一些單元測試,到目前爲止我還沒有取得任何成功。我已經嘗試了很多東西,但我目前正在嘗試使用Intern 3.0.5。下面是我在intern.js目前有:在Intern 3.x中測試Dojo 1.x應用

define({ 
    capabilities: { 'browserstack.selenium_version': '2.45.0' }, 
    environments: [ { browserName: 'firefox', version: '40', platform: ['WINDOWS'] } ], 
    maxConcurrency: 2, 
    tunnel: 'NullTunnel', 
    //loaders: { 'host-browser': 'dojo/dojo.js' }, 
    loaderOptions: { 
    packages: [ 
     { name: 'app', location: 'src' }, 
     { name: 'dojo', location: 'dojo' }, 
     { name: 'dijit', location: 'dijit' } 
    ], 

    map: { 
     '*': { 
     'dojo': 'dojo', 
     }, 
     'intern': { 
     'dojo': 'node_modules/intern/node_modules/dojo' 
     } 
    } 
    }, 
    suites: ['tests/unit/ButtonTests'], 
    excludeInstrumentation: true, 
    useSauceConnect: false, 
    proxyPort: 9000, 
    proxyUrl: 'http://localhost:9000/' 
}); 

dojoConfig = { 
    has: { 'dojo-undef-api': true } 
}; 

我希望我可以讓實習生使用Dojo 2裝載機,它附帶的,但後來在道場1.10.4點我的代碼,所以我在loaderOptions中設置了一個地圖來處理這個問題。不幸的是,我的代碼似乎並沒有被拾起正確副本,我得到這個錯誤:

× firefox 40 on WINDOWS - unit tests - Button tests - icon uses correct class (0.001s) 
TypeError: target is null 
    at on <dojo\on.js:69:6> 
    at clazz<._initializeEventHandlers <src\Button.js:35:1> 
    at clazz<.constructor <src\Button.js:29:9> 
    at singleConstructor/< <dojo\_base\declare.js:440:5> 
@http://localhost:9000/tests/unit/ButtonTests.js:19:20 
    at Test.prototype.run/< <__intern\lib\Test.js:211:19> 
    at Promise/this.then/</< <node_modules\intern\node_modules\dojo\Promise.ts:393:15> 
    at runCallbacks <node_modules\intern\node_modules\dojo\Promise.ts:11:2> 
    at settle/< <node_modules\intern\node_modules\dojo\Promise.ts:317:4> 
    at run <node_modules\intern\node_modules\dojo\Promise.ts:237:7> 
    at CallbackQueue</CallbackQueue.prototype.drain <node_modules\intern\node_modules\dojo\CallbackQueue.ts:39:4> 
    at nextTick</observer< <node_modules\intern\node_modules\dojo\nextTick.ts:63:4> 

我也試圖使實習生使用隨道場1.10,而不是一個它附帶的裝載機,它在上面粘貼的配置中被註釋掉了。當我這樣做,我得到這個錯誤:

Suite firefox 40 on WINDOWS - unit tests FAILED 
Error: xhrFailed 
    at makeError <dojo\dojo.js:106:15> 
    at req.getText <dojo\dojo.js:331:1> 
    at injectModule <dojo\dojo.js:1539:8> 
    at forEach <dojo\dojo.js:93:6> 
    at injectDependencies/< <dojo\dojo.js:758:5> 
    at guardCheckComplete <dojo\dojo.js:1277:5> 
    at injectDependencies <dojo\dojo.js:757:4> 
    at runDefQ/< <dojo\dojo.js:1621:6> 
    at forEach <dojo\dojo.js:93:6> 
    at runDefQ <dojo\dojo.js:1620:5> 
    at injectModule/xhrCallback <dojo\dojo.js:1488:9> 
    at req.getText <dojo\dojo.js:328:7> 
    at injectModule <dojo\dojo.js:1539:8> 
    at forEach <dojo\dojo.js:93:6> 
    at injectDependencies/< <dojo\dojo.js:758:5> 
    at guardCheckComplete <dojo\dojo.js:1277:5> 
    at injectDependencies <dojo\dojo.js:757:4> 
    at contextRequire <dojo\dojo.js:821:6> 
    at req <dojo\dojo.js:124:11> 
    at PreExecutor.prototype._loadExecutorWithLoader/< <__intern\lib\executors\PreExecutor.js:287:5> 
    at Promise <__intern\node_modules\dojo\Promise.js:172:17> 
    at PreExecutor.prototype._loadExecutorWithLoader <__intern\lib\executors\PreExecutor.js:286:1> 
    at loadExecutorWithLoader <__intern\lib\executors\PreExecutor.js:365:12> 
    at Promise/this.then/</< <__intern\node_modules\dojo\Promise.js:156:41> 
    at runCallbacks <__intern\node_modules\dojo\Promise.js:19:13> 
    at settle/< <__intern\node_modules\dojo\Promise.js:103:21> 
    at run <__intern\node_modules\dojo\Promise.js:51:33> 
    at CallbackQueue</CallbackQueue.prototype.drain <__intern\node_modules\dojo\CallbackQueue.js:39:21> 
    at nextTick</observer< <__intern\node_modules\dojo\nextTick.js:52:21> 

我也收到此錯誤昨天,但我不記得確切我做到了!我試圖用PhantomJS,這樣可能會做它:

Error: Repeated sequence for session 08ee5fa0-67a6-11e5-9d1c-49f2f4677a77: 0 last 0 cur 
    at Proxy._publishInSequence <node_modules\intern\lib\Proxy.js:181:11> 
    at IncomingMessage.<anonymous> <node_modules\intern\lib\Proxy.js:63:39> 
    at IncomingMessage.emit <events.js:104:17> 
    at <_stream_readable.js:908:16> 
    at process._tickCallback <node.js:355:11> 

在一個側面說明,我應該能夠在intern.js結束設置dojoConfig像我上面做什麼?我想啓用dojo-undef-api。

任何幫助將不勝感激!

回答

1

Dojo Boilerplate包含一個適用於Dojo應用程序的Intern配置,可以在您的項目中使用該配置。

+1

感謝您的回覆!不幸的是,我不認爲我有機會嘗試一下,因爲我設法讓所有的東西都能在Jasmine/Karma而不是Intern中運行起來。如果其他人發現這個答案有助於讓Dojo 1和Intern 3和諧運行,我會將其標記爲解決方案。 – donkey

相關問題