Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用网页包失败注入的角度业力测试_Angularjs_Webpack_Karma Jasmine - Fatal编程技术网

Angularjs 使用网页包失败注入的角度业力测试

Angularjs 使用网页包失败注入的角度业力测试,angularjs,webpack,karma-jasmine,Angularjs,Webpack,Karma Jasmine,我有一个相当大的角度项目写在打字脚本,我已经与网页工作。这将生成一个捆绑包,加载到浏览器中,一切正常 现在,我正在尝试运行到目前为止的几个Karma测试,当在磁盘上传输到Javascript时,这些测试通常是有效的。经过两天的反复试验后,为了让事情变得更简单,我现在只运行一个测试。所发生的是Webpack步骤运行,Karma尝试在PhantomJS中运行测试。它给出了以下错误: TypeError:undefined不是/vagrant/itracker/media/website/js/tes

我有一个相当大的角度项目写在打字脚本,我已经与网页工作。这将生成一个捆绑包,加载到浏览器中,一切正常

现在,我正在尝试运行到目前为止的几个Karma测试,当在磁盘上传输到Javascript时,这些测试通常是有效的。经过两天的反复试验后,为了让事情变得更简单,我现在只运行一个测试。所发生的是Webpack步骤运行,Karma尝试在PhantomJS中运行测试。它给出了以下错误:

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正在屏蔽它。