2014-12-04 119 views
0

我想更好地學習JavaScript。要做到這一點,我認爲我會努力編寫一個可重用的組件。我希望能夠測試這個組件。目前,我有以下文件結構:在JavaScript中使用模塊

/lib 
/services 
    /my-service 
    my-service.js 
    my-service-tests.js 

my-service.js如下所示:

function MyService() { 
} 

MyService.prototype.serviceType = "Test"; 

MyService.prototype.execute = function(p1, p2) { 
    console.log('executing with ' + p1 + ' and ' + p2); 
    try { 
    // do stuff 
    } catch (ex) { 
    console.log(ex); 
    } 
}; 

my-service-tests.js使用茉莉花,看起來像下面這樣:

describe("MyService", function() { 
    it(" Can execute", function() { 
    expect(true).toBe(true); 
    }); 
}); 

我可以成功執行通過Gulp從命令行進行測試。但是,我的挑戰是,我想調用MyService上的execute函數。最終,我想圍繞MyService編寫測試。我希望在上面的測試中做這樣的事情:

var service = new MyService(); 
service.execute(); 

有沒有辦法做到這一點?我感覺我很親密。不幸的是,似乎有些事情我沒有完全理解。如果我只是添加這個代碼,我得到一個參考錯誤。它像它不知道MyService的位置。我不知道該怎麼做。感謝您的幫助。

+0

對我來說,它看起來不錯。我使用類似於此的代碼。什麼瀏覽器(IE有'console.log'問題)?而且,你得到的錯誤是什麼? – rfornal 2014-12-04 23:48:29

+1

你真的在測試中加載了'my-service.js'嗎? – plalx 2014-12-04 23:49:53

+0

@plalx'my-service.js'未在測試中加載。我不知道如何加載它。 – 2014-12-05 13:15:16

回答

-1

我懷疑你的執行需要一個p1和p2。

UPDATE

試過......

var service = new MyService(); 
service.execute(); 
service.execute(1, "2"); 

冉代碼這裏定義...... jsFiddle,並在這兩個例子中正常工作。

我會看你的加載順序爲JS文件。

+1

不,如果沒有通過,它們將會是「未定義」。 – plalx 2014-12-04 23:50:30

+0

看起來像沒有得到加載。 – rfornal 2014-12-04 23:52:52

0

想通了。我忘了:

module.exports = MyService; 
相關問題