gpt4 book ai didi

javascript - AngularJS - 具有复杂内部逻辑的单元测试工厂

转载 作者:行者123 更新时间:2023-12-04 01:28:07 24 4
gpt4 key购买 nike

我目前正在为我的 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... 函数放入单独的服务中,并在心里记下永远不要直接访问它们?

最佳答案

您是否尝试过将您的构造中的逻辑分离到不同的服务中,然后将这些服务依赖注入(inject)到您的httpRequest 服务中?这将允许您为注入(inject)的服务编写一次测试,而不是为每个构造函数重新编写它们。另外,看看 $resourceProvider .如果您正在构建基于 RESTful API 的内容,$resourceProvider 通常涵盖您需要的一切。希望对您有所帮助。

关于javascript - AngularJS - 具有复杂内部逻辑的单元测试工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com