首页 > 解决方案 > AngularJS + Karma-Jasmine:意外请求 + UI 路由器

问题描述

我正在尝试在 Karma-Jasmine 的帮助下对 AngularJS HTTP 服务进行单元测试。但我面临来自 Karma 的以下错误:

Error: Unexpected request: GET app/license/license.html

我用谷歌搜索发现它与ui-router有关。以下 StackOverflow 链接:(UI-router interfers with $httpbackend unit test, angular js)提出了一些答案,但它们都不适合我,并且错误保持不变。

我在下面发布我的代码以供参考:

licensedata.service.js

(function () {
    "use strict";

    angular
        .module("app")
        .factory("licenseDataService", licenseDataService)

    licenseDataService.$inject = ["$http"];

    function licenseDataService($http) {

        return {
            getLicenseSpecs: getLicenseSpecs
        };

        function getLicenseSpecs() {
            return $http.get("http://localhost:8080/?command=print-spec")
                .then(success)
                .catch(fail);

            function success(response) {
                return response.data;
            }

            function fail(e) {
                return e.data;
            }
        }
    }
})();

licensedata.service.spec.js

describe("LICENSE DATA SERVICE", function () {

    var licenseDataService;
    var httpBK;

    beforeEach(angular.mock.module("app"));

    beforeEach(angular.mock.module(function ($urlRouterProvider) {
        $urlRouterProvider.deferIntercept();
    }));

    beforeEach(inject(function (_licenseDataService_, $httpBackend) {
        licenseDataService = _licenseDataService_;
        httpBK = $httpBackend;
    }));

    it("Test License Key", function () {
        var returnData = {};

        httpBK.expectGET("http://localhost:8080/?command=print-spec").respond(returnData);

        var returnedPromise = licenseDataService.getLicenseSpecs();

        var result;
        returnedPromise.then(function (response) {
            result = response.data;
        });

        httpBK.flush();
    });
});

任何帮助将不胜感激。

标签: javascriptangularjsjasminekarma-runnerkarma-jasmine

解决方案


推荐阅读