使用 angular-mocks 在 Jenkins 构建服务器上的 Jasmine 测试错误?
Jasmine test error on Jenkins Build Server with angular-mocks?
我正在使用 Angular 和 Jasmine 对 angular 指令进行单元测试。
模拟 http 后端工作正常,所有测试在本地工作正常。但是在构建服务器上我得到:
Error: Unexpected request: GET app/auth/views/login.html
No more request expected (line 1419)
$httpBackend@bower_components/angular-mocks/angular-mocks.js:1419:90
n@build/vendor.js:222:54
build/vendor.js:219:263
build/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();
});
构建服务器有何不同。我无法解释这种行为。
UI-路由器正在尝试在您的应用程序启动期间加载 app/auth/views/login.html
文件。
如果您 运行 在本地进行 Jasmine 测试,您已经在 url 设置了 Web 服务器,例如 http://localhost
,因此对 http://localhost/app/auth/views/login.html
的请求将 return 实际文件。当您 运行 在构建服务器上进行此测试时,构建服务器未配置为服务 http://localhost/app/auth/views/login.html
url,因此它 return 是 404。
这是一篇描述如何解决该问题的文章:
此外,这里有一个 github 问题,其中更详细地介绍了如何处理此问题:https://github.com/angular-ui/ui-router/issues/212
我正在使用 Angular 和 Jasmine 对 angular 指令进行单元测试。 模拟 http 后端工作正常,所有测试在本地工作正常。但是在构建服务器上我得到:
Error: Unexpected request: GET app/auth/views/login.html No more request expected (line 1419) $httpBackend@bower_components/angular-mocks/angular-mocks.js:1419:90 n@build/vendor.js:222:54 build/vendor.js:219:263 build/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();
});
构建服务器有何不同。我无法解释这种行为。
UI-路由器正在尝试在您的应用程序启动期间加载 app/auth/views/login.html
文件。
如果您 运行 在本地进行 Jasmine 测试,您已经在 url 设置了 Web 服务器,例如 http://localhost
,因此对 http://localhost/app/auth/views/login.html
的请求将 return 实际文件。当您 运行 在构建服务器上进行此测试时,构建服务器未配置为服务 http://localhost/app/auth/views/login.html
url,因此它 return 是 404。
这是一篇描述如何解决该问题的文章:
此外,这里有一个 github 问题,其中更详细地介绍了如何处理此问题:https://github.com/angular-ui/ui-router/issues/212