使用Ruby的Struct来存储一个最小的对象

使用Ruby的Struct来存储一个最小的对象,第1张

概述这是有效的,但对我来说感觉很草率.我想知道这是代码味道还是有更好的方法来完成这个结果.基本问题是如何在 ruby中存根一些任意对象. 我正在测试边缘情况 – 解析辅助方法的最终值正确格式化谷歌分析查询的结果(因此奇怪的断言声明)传入数据是谷歌分析对象,其数据在里面 – 基本上我们必须调用result.data [“rows”].这里结构的整个目的是让我的方法的内部能够发送#data消息.测试通过/ @H_419_0@ @H_419_0@ 这是有效的,但对我来说感觉很草率.我想知道这是代码味道还是有更好的方法来完成这个结果.基本问题是如何在 ruby中存根一些任意对象.

我正在测试边缘情况 – 解析辅助方法的最终值正确格式化谷歌分析查询的结果(因此奇怪的断言声明)传入数据是谷歌分析对象,其数据在里面 – 基本上我们必须调用result.data [“rows”].这里结构的整个目的是让我的方法的内部能够发送#data消息.测试通过/失败,但就像我说的那样,我想知道这是否是最好的方法,例如在发送它进行解析之前将数据从GA结果对象中取出.

我的测试方法 – 实际上它调用parse_monthly_chart_data(@ga_result)

def test_parse_monthly_chart_data_with_good_values  typical_data = {"rows" => [["0000","194346"]...more arrays...]}  typical_vals = typical_data["rows"].to_h.values.map(&:to_i)  expected_result = typical_vals[-30..-1].inject(&:+)  Struct.new("GaResult") {def data; end }  @ga_result = Struct::GaResult.new  @ga_result.stub :data,typical_data do      assert_equal(ga.send(:parse_monthly_chart_data,@ga_result).flatten.last,expected_result)  endend

编辑:我已经通过用mocha的实现替换存根来解决部分问题.我还在想这是不是代码味道.

解决方法 一点也不.我一直都在使用这种东西.您正在使用的是称为存根,使用Struct来实现这一点与使用测试框架的存根实现没有什么不同.

对于further reading on mocks,stubbing,faking,etc. see this SO Question.

@H_419_0@ 总结

以上是内存溢出为你收集整理的使用Ruby的Struct来存储一个最小的对象全部内容,希望文章能够帮你解决使用Ruby的Struct来存储一个最小的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1277085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存