如何测试具有在Karma / Mocha中返回承诺的方法的工厂?

时间:2014-09-26 16:53:52

标签: unit-testing promise mocha karma-runner angular-mock

我是单位测试角度代码的新手,并且一直试图解决这个问题。我正在使用Karma,Mocha和Chai。 Mocha(异步代码)中的异步单元测试是supported,其机制如下:

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注入不会将done函数推入“it”回调。我查看了代码甚至尝试过(知道它会失败)。基本上我相信我想要这样的东西

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

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

如何使用角度模拟来处理Mocha?

1 个答案:

答案 0 :(得分: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客户端。但是,如果我进行上述更改,代码看起来应该可以正常工作。