使用依赖注入和 `done` 编写 Karma + Mocha 测试?

Writing Karma + Mocha tests with both dependency injection and `done`?

在具有依赖注入和 done 的 mocha 中编写 Karma 单元测试的最优雅的方法是什么?

依赖注入:

describe('cows', function(){
  it('farts a lot', inject(function(cow){
    // do stuff
  }))
})

完成:

describe('cows', function(){
  it('farts a lot', function(done){
    // do stuff
  })
})

如果我希望 cowdone 在我的单元测试中可用怎么办?目前,我正在做的事情,并不尽如人意。

beforeEach(inject(function(cow){
  this.cow = cow;
}))

it('farts a lot', function(done){
  this.cow // etc
})

您可以将嵌套函数注入到测试函数

it("should nested inject function into test function", function(done) {
    inject(function($timeout) {

      $timeout(function() {
        expect(true).toBeTruthy();
        done();
      }, 10);

      $timeout.flush(10);

    });    
  });

inject 是在 ngMock 模块中定义的全局函数,可以在测试中的任何地方使用。