【发布时间】: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