如何在使用Karma的Angular单元测试中设置html5Mode?

3

好的,我已经花了几个小时处理这个问题...

我无法弄清楚如何在Angular单元测试中设置html5Mode。

这是我的Gruntfile.js文件中的Karma配置。 Gruntfile conf

这是我的单元测试规范文件: Unit Test File (请查看第26行)

因此,我尝试从[AngularJS文档中关于$location URL的部分](https://docs.angularjs.org/guide/$location)运行单元测试(“HTML5 mode”)这是规范文件:

PASTEBIN DOT COM SLASH SQFr8Y7i

当我运行上述规范文件时,我会收到以下错误:

Error: [$injector:unpr] Unknown provider: $locationProviderProvider <- $locationProvider

我试图编写单元测试,以测试启用和禁用html5Mode的情况。
1个回答

0
你可以像这样做:
angular.module('testModule', []).config(['$locationProvider',
    function($locationProvider) {
        $locationProvider.html5Mode(true);
}]);

describe('module', function() {

    beforeEach(module(
        'testModule'
    ));

    it('should test url', function() {

    });
});

但是你真的需要在一个单元测试中激活这个功能吗?


还有一些指令应该在HTML4和HTML5模式下都能正常工作,所以我想测试一下。 - Skills
好的。你可以使用我给你的示例来激活/停用它。 - Jscti
Bixi,这个方法可以用,但是现在出现了一个新问题,它会清除掉我的应用程序中的任何指令。我有一个名为directives.js的文件,其中包含类似于“angular.module('MyAppModule').directive('activeNav', ['$location', function($location) { ... }”的内容。在使用上面的代码后,这个指令不再加载到测试中。我该如何包含这个指令?我正在尝试使用html5模式打开/关闭来测试这个指令。 - Skills
我刚给了你一个例子,现在你必须注入自己的依赖(在beforeEach中),不要忘记在karma配置文件中加载你的JS文件。 - Jscti
Bixi,同时我的Karma配置文件已经设置好了,以便加载我的主应用程序JS代码,因此angular.module调用是在这些文件中进行的,并且这些文件定义了该模块。 - Skills
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接