1

私はAngularコードの単体テストに慣れていないので、これを理解しようとしています。私はカルマ、モカ、チャイを使っています。非同期単体テストは、次のようなメカニズムを介して 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()
      })
    })
  })
})

それはクールですが、inject from 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()
      })
   }) 
})  

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 に答える