Angularjs 角度单元测试在浏览器中工作,但在Chutzpah中出错

Angularjs 角度单元测试在浏览器中工作,但在Chutzpah中出错,angularjs,angular-ui,qunit,chutzpah,Angularjs,Angular Ui,Qunit,Chutzpah,我有一个angular模块,它使用angular ui bootstrap typeahead指令。我试图用qunit和chutzpah对其进行单元测试 单元测试在通过浏览器运行时运行并通过,但在使用Chutzpah运行时返回错误: 错误:错误:[$injector:modulerr]未能实例化模块myApp 原因:错误:[$injector:nomod]模块“myApp”不可用!你 模块名称拼写错误或忘记加载。如果注册 模块确保将依赖项指定为第二个 争论 为什么会发生这种错误 JS (func

我有一个angular模块,它使用angular ui bootstrap typeahead指令。我试图用qunit和chutzpah对其进行单元测试

单元测试在通过浏览器运行时运行并通过,但在使用Chutzpah运行时返回错误:

错误:错误:[$injector:modulerr]未能实例化模块myApp 原因:错误:[$injector:nomod]模块“myApp”不可用!你 模块名称拼写错误或忘记加载。如果注册 模块确保将依赖项指定为第二个 争论

为什么会发生这种错误

JS

(function () {
    var app = angular.module('myApp', ['ui.bootstrap']);

    app.factory('myFactory', ['$http', function ($http) {
        var myFactory = {};
        myFactory.getLocations = function (query) {
            return $http.get('/Locations', { params: { query: query } });
        };

        return myFactory;
    }]);

    app.controller('MyController', ['myFactory', function (myFactory) {
        this.location = '';

        this.getLocations = function (query) {
            return myFactory.getLocations(query).then(function (response) {
                return response.data;
            });
        };
    }]);
})();
HTML

<div data-ng-app="myApp" data-ng-controller="MyController as my">
    <input name="location" type="text" data-ng-model="my.location" data-typeahead="location for location in my.getLocations($viewValue)" class="form-control">
</div>

问题在于.js加载顺序。当您在代码覆盖率下运行时,blanket.js插件将检测您的文件并使其异步加载。因为您将测试文件从检测中排除,所以它是在源文件之前加载的。要更改此设置,只需通过从coverageexcludes节中删除“\test js\”来检测测试文件:

{    
    "Framework": "qunit",
    "CodeCoverageIncludes": ["*.js"],
    "CodeCoverageExcludes": [
        "*\\angular/angular.js", 
        "*\\angular/angular-mocks.js",
        "*\\angular-ui/ui-bootstrap-tpls.js",
        "*\\qunit/qunit-1.15.0.js",
        "*\\sinon/sinon-1.9.1.js"
    ],   
    "RootReferencePathMode":"SettingsFileDirectory",
    "TestHarnessDirectory": "./"
}

我的猜测是(根据错误消息),它无法加载
myapp.js
文件。不幸的是,我不知道该怎么做我将查看实际加载的文件以及加载方式。如果您可以将复制文件上载到github并共享该复制文件,那将更有帮助。@MatthewManela谢谢,我已将复制文件上载到github-
{    
    "Framework": "qunit",
    "CodeCoverageIncludes": ["*.js"],
    "CodeCoverageExcludes": [
        "*\\sinon-1.9.1.js",  
        "*\\angular.js", 
        "*\\angular-mocks.js",
        "*\\angular-ui/ui-bootstrap-tpls.js",
        "*\\Tests\\*"
    ],   
    "RootReferencePathMode":"SettingsFileDirectory",
    "TestHarnessDirectory": "./"
}
{    
    "Framework": "qunit",
    "CodeCoverageIncludes": ["*.js"],
    "CodeCoverageExcludes": [
        "*\\angular/angular.js", 
        "*\\angular/angular-mocks.js",
        "*\\angular-ui/ui-bootstrap-tpls.js",
        "*\\qunit/qunit-1.15.0.js",
        "*\\sinon/sinon-1.9.1.js"
    ],   
    "RootReferencePathMode":"SettingsFileDirectory",
    "TestHarnessDirectory": "./"
}