【问题标题】:Testing a function in an angular factory with jasmine用 jasmine 在 Angular 工厂中测试功能
【发布时间】:2023-03-16 01:30:02
【问题描述】:

我想在 Angular 工厂中测试一个函数。

app.factory('customerSearchService', function ($http, $q) {

    var customerSearchByName = function (searchTokens) {
        //Some stuff
    };

    function createSearchStringFromArray(searchArray) {
        //Do some stuff
        return 'Processed string';
    }

    return {
        customerSearchByName: customerSearchByName
    };
});

我尝试访问内部函数,导致函数出现未定义消息:

describe("Services: customerSearchService", function () {
  beforeEach(module('AddressService'));

   var customerSearchService;

   beforeEach(inject(function($injector) {
       customerSearchService = $injector.get('customerSearchService');
   }));

   it("createSearchStringFromArray is a function", function () {
       expect(customerSearchService.createSearchStringFromArray).toBeFunction();
   });
});

我可以将 createSearchStringFromArray 添加到工厂函数中,但我希望它保持私有。

如何使用 jasmine 访问内部函数?

【问题讨论】:

标签: angularjs jasmine


【解决方案1】:

感谢来自 runTarm 的链接 (http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/) 我创建了一个新的测试服务方法,它被 grunt 部署删除了。

角度工厂:

function createSearchStringFromArray(searchTokensArray) {
    //Do some stuff
    return 'Processed string';
}

return {
    customerSearchByName: customerSearchByName,
    /* test-code */
    createSearchStringFromArray: createSearchStringFromArray
    /* end-test-code */
};

感谢 runTarm!

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多