如何在茉莉花中单元测试以下功能?

时间:2015-06-30 17:40:26

标签: javascript angularjs jasmine

I have a following code:

    angular
        .module('testApp')
        .factory('testDataService', function ($http) {
            function testDataService(){
                var self = this;
                self.test = function(){
                    //do something
                }

                self.test1 = function(){
                    // do something                
}
            }

            return new testDataService();

When I try to write a test case like 

    beforeEach(function(){
        new testDataService();
    });

It gives some error like:

> TypeError: '[object Object]' is not a constructor (evaluating 'new testDataService()')

testDataService中有许多功能,如“test”,“test1”等。我无法测试其余功能,因为外部功能的范围无法访问。由于“var self = this”,我无法获取实例     请帮忙。

2 个答案:

答案 0 :(得分:1)

不需要新的运算符来创建Object。

请检查一下

describe("\n\Testing factory", function () {
        var factTestDataService;

        beforeEach(inject(function (testDataService) {
           factTestDataService= testDataService;
        }))


        it("factTestDataService test to defined",function(){

            expect(factTestDataService.test()).toBeDefined()
        })
        it("factTestDataService test1 to defined",function(){

            expect(factTestDataService.test1()).toBeDefined()
        })

         it("factTestDataService to defined",function(){

            expect(factTestDataService).toBeDefined()
        })          
    });

您需要注入 testDataService 工厂并将其存储在本地var。

然后您可以使用此方法访问该工厂中定义的方法,就像在角度中一样,可以使用不同的Jasmine测试方法进行检查。

答案 1 :(得分:0)

您的工厂已经返回testDataService的新实例。无需拨打new。当您尝试在实例上调用new时,它会抛出您看到的错误。