【发布时间】:2018-12-18 21:32:56
【问题描述】:
我有一段代码:
requests.each do |request|
request.each do |rqst|
select_keys = ["author", "author_name"]
selected_unit_req = rqst.select { |m| select_keys.include?(m) }
user = Etl::Models::User.where(username: selected_unit_req["author"]["username"] )
user.merge!({ author_name: selected_unit_req["author"]["name"] })
end
end
我无法测试合并!方法,当我运行现有的单元测试时得到NoMethodError:undefined method '[]' for nil:NilClass。有什么建议吗?
【问题讨论】:
-
为什么要为另一个(内置)类的方法编写测试?从风格的角度来看,avoid using
{}for multi-line blocks。试图破译你的例子让我头疼。 -
运行单元测试时出现以下错误。
NoMethodError: undefined method '[]' for nil:NilClass -
你的例子太复杂了。先简化一下。您正在进行十个方法调用,链接多个方法调用,包括条件调用,并将救援全部包含在一行中。您显示的错误根本无助于破译它,因为您没有包含测试代码,最重要的是,您在那次调用
[]四次线。让您的生活更轻松:将此代码重构为可读且合理的代码,然后对其进行测试。 -
我正在修改我的代码(提供一个更简单的示例)。
-
@anothermh 我刚刚添加了一段不同的代码
标签: ruby unit-testing rspec