gpt4 book ai didi

angularjs - AngularJS 中 $routeChangeStart 的 Jasmine 单元测试用例

转载 作者:行者123 更新时间:2023-12-04 17:22:26 29 4
gpt4 key购买 nike

嗨,我正在使用 AngularJS 构建应用程序现在我开始对我的应用程序进行单元测试。我知道如何为服务、 Controller 等编写单元测试用例。但我不知道如何为 $routeChangeStart 编写它.

我的 app.js 中有以下代码

app.run(function ($rootScope, $location, AuthenticationService) {
$rootScope.$on('$routeChangeStart', function () {
if (AuthenticationService.isLoggedIn()) {
$rootScope.Authenticated = 'true';
$rootScope.Identity = localStorage.getItem('identification_id');
} else {
$rootScope.Authenticated = 'false';
$rootScope.Identity = localStorage.removeItem('identification_id');
}
});
});

我编写了这段代码来确定用户是否为我的应用程序中的每个路由登录。我写了一个服务 AuthenticationService为此目的,例如;
app.factory('AuthenticationService', function (SessionService) {
return {
isLoggedIn: function () {
return SessionService.get('session_id');
}
};
});

我的 session 服务喜欢;
app.factory('SessionService', function () {
return {
get: function (key) {
return localStorage.getItem(key);
}
};
});

我正在使用 Jasmine编写测试用例并使用 Istanbul代码覆盖率。当我使用 Grunt 运行测试时我在我的 app.js 中得到了类似的东西;

enter image description here

这是因为我没有在我的测试用例中涵盖这些语句,因为我不知道如何为这段特定的代码编写测试用例。有什么建议么?

最佳答案

run每次加载模块时都会运行 block ,以便在测试期间注册监听器。您只需要实际发送该事件,以便您可以测试其中的代码。这样的事情应该可以解决问题:

it("should test the $routeChangeStart listener", inject(function($rootScope) {
$rootScope.$broadcast("$routeChangeStart");
//expects for the listener
}));

How can I test events in angular?一般如何测试事件。

关于angularjs - AngularJS 中 $routeChangeStart 的 Jasmine 单元测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093010/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com