2014-02-22 54 views
0

嘗試使用nodejs和jasmine-node對客戶端JavaScript執行單元測試。 我能夠創建窗口和文檔變量,$變量,設置環境(使用npm,不要忘記定義NODE_PATH!)。但現在我堅持這一點。使用nodejs確定機制並要求

我想測試的功能在模塊中。我可以導入(需要)模塊,但導入模塊的變量無法從nodejs訪問(或者出於與我想象的相同原因的茉莉花spec文件)。

這裏是模塊:

var test_module = (function() { 
    var init = function() { 
    return "toto"; 
    } 

    return { init: init }; 
})(); 

在變test_module,我們應該找到含有所有的導出函數(這裏只有一個名爲INIT)字典中的變量。

在的NodeJS:

> require('test.js'); 
{} 
> test_module 
ReferenceError: test_module is not defined 
    at repl:1:2 
    at REPLServer.self.eval (repl.js:110:21) 
    at Interface.<anonymous> (repl.js:239:12) 
    at Interface.EventEmitter.emit (events.js:95:17) 
    at Interface._onLine (readline.js:202:10) 
    at Interface._line (readline.js:531:8) 
    at Interface._ttyWrite (readline.js:760:14) 
    at ReadStream.onkeypress (readline.js:99:10) 
    at ReadStream.EventEmitter.emit (events.js:98:17) 
    at emitKey (readline.js:1095:12) 

我不知道理解的範圍界定在怎樣的NodeJS工作。我試圖把:

global.test_module = (function() { 

和這個工程,但這不是我想要做的。我的JavaScript應該在瀏覽器中運行一次,全球不會這樣做...

注意:單元測試客戶端JavaScript使用命令行,瀏覽器和服務器解決方案應該得到神教程我猜。有一些在那裏,但他們通常不完整。

+1

您還需要將模塊'module.exports = test_module'導出到模塊文件的末尾。然後從你的主文件'var test_module = require(「test.js」);' – htatche

+0

你不應該在node.js中測試瀏覽器代碼 – vkurchatkin

+0

對於htatche:是的,但這是一個nodejs的東西......瀏覽器如何管理這個。我認爲它不會喜歡這個出口業務。這裏的目的是單元測試一個客戶端JavaScript模塊,所以一個模塊從一個HTML頁面中的