我现在正在为angularjs应用程序编写单元测试,并希望就如何测试我的工厂提出一些建议。不幸的是,由于我在编写测试之前编写了所有代码,因此我的工厂中有一些相当复杂的逻辑。
目前,例如,我有一个httpRequest服务:
angular.module('myApp')
.service('httpRequest', ['$http',
function($http) {
function constructHttpRequest() {/*code*/}
function constructCertainTypeOfHttpRequest() {/*code*/}
function constructOtherTypeOfHttpRequest() {/*code*/}
return {
method1: function() {/*code*/}
method2: function() {/*code*/}
method3: function() {/*code*/}
}
}]);
该服务公开了许多不同的请求方法,这些方法使用相当复杂的construct...
函数(未公开)来生成请求。
理想情况下,我会测试所有construct...
函数,然后测试方法是否使用正确的参数调用这些函数;我真的不想复制和粘贴construct...
逻辑的测试。
我的问题是 - 为了测试,是否有任何简洁的方法来公开这些函数,但是没有将它们暴露给整个应用程序?在理想的世界中,我应该如何编写工厂代码;我应该将construct...
函数放入一个单独的服务中,只是做一个心理记录而不是直接访问它们吗?
答案 0 :(得分:0)
您是否尝试在不同服务中分离构造中的逻辑,然后依赖注入这些服务到您的httpRequest
服务中?这将允许您为注入的服务编写一次测试,而不是为每个构造函数重写它们。另外,请查看$resourceProvider。 $resourceProvider
通常涵盖了您根据RESTful API构建内容所需的一切。希望它有所帮助。