1

我是单元测试角度代码的新手,并且一直在尝试解决这个问题。我正在使用 Karma、Mocha 和 Chai。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 注入不会将 done 函数推送到“it”回调中。我查看了代码,甚至尝试了它(知道它会失败)。本质上我相信我想要这样的东西

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

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

如何让 angular-mock 与 Mocha 一起使用?

4

1 回答 1

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 客户端。但是,如果我在上面进行更改,代码看起来应该可以工作。

于 2014-09-26T17:02:25.790 回答