【问题标题】:Jasmine test error on Jenkins Build Server with angular-mocks?带有角度模拟的Jenkins Build Server上的Jasmine测试错误?
【发布时间】:2017-03-13 10:39:30
【问题描述】:

我正在使用 Angular 和 Jasmine 对 Angular 指令进行单元测试。 模拟 http 后端工作正常,所有测试在本地工作正常。但是在构建服务器上我得到:

错误:意外请求:GET app/auth/views/login.html 预计不再有请求(第 1419 行) $httpBackend@bower_components/angular-mocks/angular-mocks.js:1419:90 n@build/vendor.js:222:54 构建/vendor.js:219:263 构建/vendor.js:254:21 $eval@build/vendor.js:268:347 $digest@build/vendor.js:265:425

我的测试设置:

beforeEach(angular.mock.module("app"));

beforeEach(() => {
    inject(function ($injector, _$compile_, _$rootScope_) {
      // The injector unwraps the underscores (_) from around the parameter names when matching
      $compile = _$compile_;
      $rootScope = _$rootScope_;
      $httpBackend = $injector.get("$httpBackend");
    });

$httpBackend.whenGET("api/langs/gb.json").respond({ "COMMON.HOME": homeName });
$httpBackend.whenGET("api/langs/de.json").respond({});

$httpBackend.whenGET("app/home/views/dashboard.html").respond(200, "");
$httpBackend.whenGET("app/home/views/login.html").respond(200, "");
$httpBackend.whenGET(/^private\/auth\?.*/).respond({});

directiveElem = getCompiledElement();
  });

构建服务器上有什么不同。我无法解释这种行为。

【问题讨论】:

  • 你能显示你用来模拟app/auth/views/login.html文件的$httpBackend代码吗?
  • 能否也显示指令的代码?
  • 在您提供的示例中,http://localhost/app/auth/views/login.html 在哪里被引用。你是如何在你的应用程序中包含login.html 的?您能否分享包含该文件的代码?
  • 只在配置中使用 .config(function ($stateProvider) { $stateProvider .state("login", { url: "/login", views: { root: { templateUrl: " app/auth/views/login.html", 控制器: "AuthController" } },
  • 我更新了我的答案。看看这是否能解决您的问题。

标签: angularjs unit-testing jenkins httpbackend angular-mock


【解决方案1】:

UI-Router 在您的应用启动期间尝试加载app/auth/views/login.html 文件。

如果您在本地运行 Jasmine 测试,您已经在 http://localhost 之类的 URL 上设置了 Web 服务器,因此对 http://localhost/app/auth/views/login.html 的请求将返回实际文件。在构建服务器上运行此测试时,构建服务器未配置为提供 http://localhost/app/auth/views/login.html url,因此它返回 404。

这是一篇描述如何解决该问题的文章:UI-router interfers with $httpbackend unit test, angular js

另外,这里有一个 github 问题,它更详细地介绍了如何处理这个问题:https://github.com/angular-ui/ui-router/issues/212

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2022-01-10
    • 1970-01-01
    • 2020-10-26
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多