【问题标题】:Using $injector in AngularJS when integration testing (without using ngMock)集成测试时在AngularJS中使用$injector(不使用ngMock)
【发布时间】:2015-05-13 22:11:25
【问题描述】:

我需要使用 Karma/Jasmine 在 AngularJS 中设置一些集成测试,但遇到了麻烦,因为当不使用 ngMock 时(因为我想访问实际的 $http 端点),没有 moduleinject方法。

那么如何将服务注入到我的测试中?

我尝试了angular.injector.invoke(...),但无法正常工作,总是返回类似Unknown provider: AuthServiceProvider <- AuthService 的错误。

想法?

【问题讨论】:

  • 我不是你所说的“没有模块或注入方法”。您可以在帖子中添加一些示例代码吗?
  • 看看:pastebin.com/cey8tPdG。这是 Angular 中使用 karma/jasmine 的基本测试。结果是ReferenceError: Can't find variable: module,如果你不使用 ngMock 模块。

标签: angularjs unit-testing jasmine integration-testing karma-runner


【解决方案1】:

试试这个

'use strict';

describe('Login User', function () {
    var app, LoginService;

    beforeEach(module('app')) ;

    beforeEach(inject(function(_LoginService_) {
        LoginService = _LoginService_;
    })) ;

   it('Should be logged in', function () {
       var isLoggedIn = LoginService.isUserLoggedIn();
       expect(isLoggedIn).toBeTruthy();
    });
 });

【讨论】:

  • ReferenceError: Can't find variable: module
  • 你能发布你的业力配置吗?
  • 呃,我刚刚尝试了一些东西。我在业力中包含angular-mocks.js 文件。但我不包括ngMock。令人惊讶的是,这行得通!我现在可以在业力/茉莉花测试中使用moduleinject。我希望这意味着 $httpBackend 没有被实施。稍后我会进行进一步的测试,以确保我可以运行我的集成测试。
猜你喜欢
  • 2015-05-26
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多