你能测试Breezejs吗?

时间:2014-09-13 21:51:18

标签: angularjs unit-testing jasmine breeze

我一直在尝试用Jasmine测试一个角度应用程序,它们的效果非常好。我也正在开发一个基于John Papa的Hottowel的Angular应用程序。

但是,唉,测试是不可能的,因为BreezeJs似乎根本不可测试。它一直干扰我的测试,无法找到模拟,存根或间谍的方法。

关于这个问题有一些古老的问题,但唯一的答案似乎是来自其他辉煌的沃尔贝尔的承诺。

显然可以在内部使用QUnit进行测试,但是测试很简单,没有跟踪如何使用其他框架,更不用说市场领导者Angular。

所以,我的问题是: 有没有人知道用Jasmine和Angular测试Breezejs的方法,或者我是否应该完全忘记这个想法并使用旧的$ http ...?

感谢明显受挫的米格尔·德尔加多

3 个答案:

答案 0 :(得分:1)

好的,感谢Bell Ward和PW Kad的帮助。

作为说明我如何“解决”问题的一种方式:

问题是该应用程序基于John Papa的Hottowel,它有一个名为Prime的方法,可以预加载查找。

因此,只要应用程序运行,Breeze就会请求元数据,查找和大量工作在启动时完成。通常Breeze会抛出空元数据的异常。

我对TDD并不擅长,但我的理解是,被测试的作品必须与其他“活动部件”隔离开来,因此,Breeze完成的所有工作都应该被抽象或嘲笑。

直到今天,我还不知道如何模仿Breeze,我试过但是模拟器正在为Prime和默认控制器所期望的数据留下空洞。

所以,我这样做了:

    Boilerplate prep work... then:

    beforeEach(inject(function($injector, breeze) {

        // Set up the mock http service responses
        $httpBackend = $injector.get('$httpBackend');

        // backend definition common for all tests
        $httpBackend.when('GET', '/auth').respond(200, [{ id: 1, name: "banana" }]);
        $httpBackend.whenGET('breeze/Breeze/Metadata').respond(200, 
                         {THE WHOLE METADATA FILE GOES HERE!}

        //This are calls for each lookup
        $httpBackend.whenGET('breeze/Breeze/Lookup1?').respond(200, [{}]); //dummy answer,ok
        $httpBackend.whenGET('breeze/Breeze/Lookup2?').respond(200, [{}]);

        $rootScope = $injector.get('$rootScope');

        var $controller = $injector.get('$controller');

        //The controller doesn't have anything to do with breeze...
        createController = function () {
            return $controller(authentication, { '$scope': $rootScope });
        };


       //...boilerplate Jasmine...

我必须插入整个元数据文件,因为它不知道在运行时需要什么。

答案 1 :(得分:0)

Breeze应用程序很容易测试,但我当然同意我们缺乏足够的指导。

在短期内,您将找到一个带有Jasmine测试{4}的Breeze / Angular应用程序。

我正在研究测试Angular应用程序的PluralSight课程,并希望能够轻松实现。我很乐意尽快提出您的具体问题,以便我可以将它们合并(至少在我的计划中)。

答案 2 :(得分:0)

您可以使用仅作为测试的一部分加载的假实体轻松模拟breeze.js应用程序。这是我写的关于确切主题的文章 - http://pwkad.wordpress.com/2014/02/02/creating-mocks-with-breeze-js/ - 它向您展示了如何开始。