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
Jasmine AngularJS中的测试控制器_Angularjs_Jasmine - Fatal编程技术网

Jasmine AngularJS中的测试控制器

Jasmine AngularJS中的测试控制器,angularjs,jasmine,Angularjs,Jasmine,我正在尝试使用Jasmine测试我的控制器和服务 我有一个家庭控制器定义如下 angular.module('TFPMPortal').controller('HomeController', Home); Home.$inject = ["$cookieStore", "PartsTrackHttpCallService", "$scope"]; /* @ngInject */ function Home(cookieStore, PartsTrackHttpCal

我正在尝试使用Jasmine测试我的控制器和服务

我有一个家庭控制器定义如下

angular.module('TFPMPortal').controller('HomeController', Home);

    Home.$inject = ["$cookieStore", "PartsTrackHttpCallService", "$scope"];

    /* @ngInject */
    function Home(cookieStore, PartsTrackHttpCallService, scope) {
}
下面是我使用Jasmine进行的单元测试

describe('HomeController', function () {
    var scope, ctrl, cookieStore, PartsTrackHttpService;

    beforeEach(module('TFPMPortal'));

    beforeEach(inject(function ($controller, $rootScope) {
        scope = $rootScope.$new();
        ctrl = $controller('HomeController', {
            cookieStore: null,
            partsTrackHttpService: PartsTrackHttpService,
            $scope: scope
        });
    }));

    it('should call the init data function', function () {
        var count = 0;
        PartsTrackHttpService.httpCall("common/tfpminitdata", scope.mc.PartsTrackProfile, true, true).then(function (response) {
            count = response.data.SiteList.length;
        });
        expect(scope.greeting).toBe("Greetings Frederik");
    });
});
我收到错误-“HomeController”不是一个函数,未定义。

在每个测试套件(测试文件)中,您需要确保加载包含要测试代码的角度模块

在本例中,在名为“TFPMPortal”的模块上声明了your
HomeController
。在测试中加载此模块:

beforeEach(module('TFPMPortal'));
请注意,这将加载“TFPMPortal”模块,但如果您的控制器/测试正在使用应用程序中其他模块的服务/工厂/等,则您也需要加载这些模块。例如,看起来您需要包括“ngCookies”(您使用的b/c
$cookieStore
):


编辑:实际上,在进一步检查时,您的测试代码通过传递
null
,满足了
$cookieStore
依赖关系,因此可能不需要引用
ngCookies
模块。。。另一方面,没有必要这样做b/c Angular可以注入真正的
$cookieStore

lol这是你第三次更改评论。当您制作最终版本时,请告诉我:PI按照您的建议加载了模块“TFPMPortal”,但gitbash中仍然出现了一些长二进制错误。在该错误消息中,应该有另一条语句指示错误。Angular喜欢为错误生成URL,我猜这就是您看到的。很可能您只需要加载控制器正在使用的另一个模块。答案在错误消息中。
beforeEach(module('TFPMPortal', 'ngCookies'));