2014-09-26 58 views
1

我是單元測試角碼的新手,一直在試圖弄清楚這一點。我正在使用Karma,Mocha和Chai。異步單元測試通過,看起來像這樣的機制是摩卡(異步代碼)supported如何測試一個有Karma/Mocha回報承諾的工廠?

describe('User', function(){ 
    describe('#save()', function(){ 
    it('should save without error', function(done){ 
     var user = new User('Luna'); 
     user.save(done); 
    }) 
    }) 
}) 

我以爲可以改寫假設savePromise是一個承諾實現

describe('User', function(){ 
    describe('#save()', function(){ 
    it('should save without error', function(done){ 
     var user = new User('Luna'); 
     user.savePromise().then(function(){ 
     done() 
     }) 
    }) 
    }) 
}) 

這將是冷靜,但從angular-mock注入不會將完成的功能推入「it」回調。我審查了代碼,甚至嘗試了它(知道它會失敗)。基本上我相信我想要這樣的東西

describe('#save()', function(){ 
    it('should save without error', inject(function (User, done) { 

     var user = new User('Luna'); 
     user.savePromise().then(function(){ 
     done() 
     }) 
    }) 
}) 

我該如何獲得角模擬與摩卡一起工作?

回答

0

等等......就像進行注射和測試前一樣簡單嗎?

var myUser 
beforeEach(inject(function (User) { 
    myUser = User 
})) 

describe('#save()', function(){ 
    it('should save without error', function (done) { 

     var user = new myUser('Luna'); 
     user.savePromise().then(function(){ 
     done() 
     }) 
    }) 
}) 

它仍然不適用於我的情況。我正在嘗試測試一個不打算進行調用的HTTP客戶端。但是,代碼看起來像是,如果我在上面進行更改,它應該可以工作。