【问题标题】:How to test a factory that has a method that returns a promise in Karma / Mocha?如何测试具有在 Karma / Mocha 中返回承诺的方法的工厂?
【发布时间】:2014-11-21 18:14:24
【问题描述】:

我是单元测试角度代码的新手,并且一直在尝试解决这个问题。我正在使用 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()
      })
   }) 
})  

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

【问题讨论】:

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


    【解决方案1】:

    等等...就像在测试前进行注射一样简单吗?

    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-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      相关资源
      最近更新 更多