在简单的Jasmine测试中注入$ log服务

Dan*_*Dan 2 jasmine angularjs angular-mock

是的,我是Angular和Jasmine的新手,我无法弄清楚如何为我的测试注入一个模拟$ log.这是测试:

(function () {
    'use strict';

    describe('basic test', function(){
        it('should just work', function(){
            var $log;

            beforeEach(inject(function(_$log_){
                $log = _$log_;
            }));

            $log.info('it worked!');
            expect($log.info.logs).toContain(['it worked!']);
        });
    });

}())
Run Code Online (Sandbox Code Playgroud)

这在注入行上失败并出现错误:

TypeError: Cannot set property 'typeName' of undefined
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

ed.*_*ed. 12

这个怎么样:

describe('basic test', function(){
    var log;
    beforeEach(inject(function(_$log_){
        log = _$log_;
    }));

    it('should just work', function(){
        log.info('it worked!');
        expect(log.info.logs).toContain(['it worked!']);
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 他把'beforeEach`**移到了'it`之外(那里它是看不见的,被忽略了)并进入了`describe`的主体. (4认同)
  • 你能详细说明改变的意义吗?这有什么不同? (2认同)