Angularjs 使用网页包失败注入的角度业力测试
我有一个相当大的角度项目写在打字脚本,我已经与网页工作。这将生成一个捆绑包,加载到浏览器中,一切正常 现在,我正在尝试运行到目前为止的几个Karma测试,当在磁盘上传输到Javascript时,这些测试通常是有效的。经过两天的反复试验后,为了让事情变得更简单,我现在只运行一个测试。所发生的是Webpack步骤运行,Karma尝试在PhantomJS中运行测试。它给出了以下错误:Angularjs 使用网页包失败注入的角度业力测试,angularjs,webpack,karma-jasmine,Angularjs,Webpack,Karma Jasmine,我有一个相当大的角度项目写在打字脚本,我已经与网页工作。这将生成一个捆绑包,加载到浏览器中,一切正常 现在,我正在尝试运行到目前为止的几个Karma测试,当在磁盘上传输到Javascript时,这些测试通常是有效的。经过两天的反复试验后,为了让事情变得更简单,我现在只运行一个测试。所发生的是Webpack步骤运行,Karma尝试在PhantomJS中运行测试。它给出了以下错误: TypeError:undefined不是/vagrant/itracker/media/website/js/tes
TypeError:undefined不是/vagrant/itracker/media/website/js/test/admin/controllers/colsumObjectController.spec.ts(第73行)中的对象(评估“browser.url”)
这意味着浏览器
变量未通过注入步骤设置。事实上,我已经在函数中添加了一个控制台日志,但它从未执行过
describe("ColsumObjectController", () => {
const allColsumObjectsForProcess = { "count": 4, "next": null, "previous": null, "results": []};
const allColsumOptions = { "count": 6, "next": null, "previous": null, "results": []};
const allColsumFieldsForProcess = { "count": 6, "next": null, "previous": null, "results": []};
beforeEach(angular.mock.module('adminApp'));
var controller, browser, httpBackend, $scope, colsumObjectController;
console.log('1. *****************************');
beforeEach(angular.mock.inject( (_$controller_, _$browser_, _$httpBackend_) => {
console.log(_$browser_);
console.log('2. *****************************');
controller = _$controller_;
browser = _$browser_;
httpBackend = _$httpBackend_;
}));
beforeEach(() => {
console.log('3. *****************************');
$scope = {};
browser.url('http://127.0.0.1/process/admin/colsum-object-list-view/2/');
httpBackend.whenGET('/rest/v1/colsum-objects/?process=2').respond(200, allColsumObjectsForProcess);
httpBackend.whenGET('/rest/v1/colsum-options/').respond(200, allColsumOptions);
httpBackend.whenGET('/rest/v1/colsum-fields/?process=2&page_size=9999').respond(200, allColsumFieldsForProcess);
colsumObjectController = controller('ColsumObjectController', {$scope: $scope});
httpBackend.flush();
});
// Rest of test
输出:
PhantomJS 2.1.1 (Linux 0.0.0) LOG: '1. *****************************'
LOG: '3. *****************************'
所以你可以看到第二步没有被执行。这是为什么?一切看起来都很好,但我一直在看这篇文章,可能是你的第三个beforeach在第二个beforeach之前执行。看一看,让我知道,如果它帮助编辑看起来好像注射从来没有发生过,所以这看起来像是一个问题与角度,而不是茉莉花。我只是不明白为什么这永远不会实现。这里也有同样的问题。通过检测
angular mock
我可以看到这一行似乎只是停止了注入的执行:injector=currentSpec.$injector=angular.injector(modules,strictDi)代码>。记录之前的日志,不记录之后的日志。不例外,什么都没有…结果是我试图加载一个未知的模块。角度抛出异常,但beforeach正在屏蔽它。