1

我有茉莉花和角的问题。我必须测试我的工厂。我在 plunker 上做了一个简化的项目。这是演示应用程序:http: //plnkr.co/edit/Agq4xz9NmYeEDWoJguxt 这是演示测试: http://plnkr.co/edit/ALVKdXO00IEDaKIjMY6u 第一个问题是如何在没有任何规范的情况下使规范运行器工作。

当您运行演示测试 plunker 时,您将看到错误:

TypeError:myDataRaw 在 http://run.plnkr.co/Kqz4tGMsdrxoFNKO/app.js 中未定义(第 39 行)

有人可以帮忙吗?

谢谢

4

1 回答 1

2

问题是

在您的生产代码中

var dataLoadedPromise = $http.get('myData.xml', {transformResponse: transformResponse});

你期望服务器返回的是XML数据而不是 json,所以当你模拟 HTTP 时,你应该使用 XML 而不是 Json。

这是工作代码:

describe("controller: MyController", function () {

    beforeEach(function () {
        module("myApp");
    });

    var dataFactory;

    beforeEach(inject(function ($injector, $controller, $rootScope, $location, $httpBackend) {
        this.$location = $location;
        this.$httpBackend = $httpBackend;
        this.scope = $rootScope.$new();
        dataFactory = $injector.get('dataFactory');

        this.$httpBackend.expectGET('myData.xml').respond(
            "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><myData><persons><person><firstName>Pera</firstName><lastName>Peric</lastName><email>perica@gmail.com</email><score>22</score></person></persons></myData>");

        $controller('MyController', {
            $scope: this.scope,
            $location: $location,
            myData: dataFactory
        });
    }));

    afterEach(function () {
        this.$httpBackend.verifyNoOutstandingRequest();
        this.$httpBackend.verifyNoOutstandingExpectation();
    });

    describe("successfully parsed persons", function () {
        it("should have 2 persons", function () {

            dataFactory.getData();
            this.$httpBackend.flush();
        });
    });
});

Updated Demo

于 2013-08-16T14:37:10.667 回答