【问题标题】:how do I set html5Mode in angular unit test? using karma如何在角度单元测试中设置 html5Mode?使用业力
【发布时间】:2014-11-02 12:19:23
【问题描述】:

好吧,我在这个上花了几个小时......

我不知道如何在角度单元测试中设置 html5Mode。

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

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

因此,我尝试从 [此处为 $location URL 的 AAngularJS 文档](“HTML5 模式”部分)的 Angular 文档中运行单元测试,这是规范文件:

PASTEBIN DOT COM SLASH SQFr8Y7i

当我运行那个 ^^ 规范文件时,我得到了这个错误:

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

我正在尝试进行单元测试来测试 html5Mode 的开启和关闭。

【问题讨论】:

    标签: javascript html angularjs gruntjs karma-runner


    【解决方案1】:

    你可以这样做:

    angular.module('testModule', []).config(['$locationProvider',
        function($locationProvider) {
            $locationProvider.html5Mode(true);
    }]);
    
    describe('module', function() {
    
        beforeEach(module(
            'testModule'
        ));
    
        it('should test url', function() {
    
        });
    });
    

    但是您真的需要在单元测试中激活此功能吗?

    【讨论】:

    • 好吧,就像我说的我想让我的应用程序在启用和禁用 html5 模式下工作,所以我需要对启用/禁用模式进行单元测试。
    • 还有一些指令可以在 html4 和 html5 模式下工作,所以我想测试一下。
    • 好吧。您可以使用我给您的示例来激活/停用它
    • Bixi,这行得通,但现在的新问题是它清除了我的应用程序拥有的所有指令。我有一个名为directives.js 的文件,其内容类似于“angular.module('MyAppModule').directive('activeNav', ['$location', function($location) { ... }” 该指令不再加载在使用上面的代码后的测试中。我如何包含这个指令?我正在尝试使用 html5 模式开/关测试这个指令。
    • 我只是给你一个例子,你现在必须注入你自己的依赖项(在 beforeEach 中),并且不要忘记在你的 karma 配置文件中加载你的 JS 文件
    猜你喜欢
    • 1970-01-01
    • 2014-09-18
    • 2015-04-10
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多