【问题标题】:Testing angular factories with jasmine用茉莉花测试角工厂
【发布时间】:2013-08-15 10:07:48
【问题描述】:

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

当你运行 demo test plunker 你会看到错误:

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

有人可以帮忙吗?

谢谢

【问题讨论】:

  • 请先修复所有乱七八糟的变量名。将“人”重命名为“人”。这是什么var persons = myDataRaw.persons.person;?将人员分配给人员集合?这没有任何意义。
  • "persons = myDataRaw.persons.person;"确实导致收藏。您可以在工作示例plnkr.co/edit/Agq4xz9NmYeEDWoJguxt 上检查它,这是相同的代码。我做了 2 个 plunkr,因为一个是演示,另一个是相同的代码,但用于 jasmine 测试。

标签: unit-testing angularjs tdd jasmine


【解决方案1】:

问题是

在您的生产代码中

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

【讨论】:

  • 谢谢sza!就是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多