【发布时间】:2019-04-30 10:03:36
【问题描述】:
问题是: 我有方法
def comparison_reporter(list_of_scenarios_results1, list_of_scenarios_results2)
actual_failed_tests = list_of_scenarios_results2.select {|k,v| v == 'Failed'}
actual_passed_tests = list_of_scenarios_results2.select {|k,v| v == 'Passed'}
failed_tests = Array.new(actual_failed_tests.length) { Hash.new }
failed_tests.each do |hash|
actual_failed_tests.keys.map {|name| hash["test_name"] = name}
actual_failed_tests.values.map {|new_status| hash["actual_status"] = new_status}
list_of_scenarios_results1.values_at(*actual_failed_tests.keys).map {|old_status| hash["previous_status"] = old_status}
end
final_result = {
"passed_tests_count" => list_of_scenarios_results2.select {|k,v| v == 'Passed'}.length,
"failed_tests_count" => list_of_scenarios_results2.select {|k,v| v == 'Failed'}.length,
"failed_tests" => failed_tests
}
return final_result
end
此方法将 2 个哈希值作为参数,并返回它们的比较结果和其他一些内容。目前,它总是返回 failed_tests 并带有两个(或更多)相同的哈希值(相同的键值对)。
我认为,这个问题在failed_tests.each do |hash| 块中的某个地方,但我找不到这个错误的原因,请指教。方法结果示例(.json格式)
{
"passed_tests_count": 3,
"failed_tests_count": 2,
"failed_tests": [
{
"test_name": "As a user I want to use Recent searches tab",
"actual_status": "Failed",
"previous_status": "Failed"
},
{
"test_name": "As a user I want to use Recent searches tab",
"actual_status": "Failed",
"previous_status": "Failed"
}
]
}
更新: hash1(第一个参数) -
{""=>"Passed",
"As a new user I want to use no fee rentals tab"=>"Passed",
"As a new user I want to use Luxury rentals tab"=>"Passed",
"As a user I want to use Recent searches tab"=>"Failed",
"As a user I want to use new listings for you tab"=>"Passed"}
hash2(第二个参数)-
{""=>"Passed",
"As a new user I want to use no fee rentals tab"=>"Failed",
"As a new user I want to use Luxury rentals tab"=>"Passed",
"As a user I want to use Recent searches tab"=>"Failed",
"As a user I want to use new listings for you tab"=>"Passed"}
所需输出的示例:
{
"passed":"count",
"failed":"count",
"failed_tests": [
{"test_name":"As a user I want to use Recent searches tab",
"actual_status":"failed",
"previous_status":"failed"},
{"test_name":"As a new user I want to use no fee rentals tab",
"actual_status":"failed",
"previous_status":"passed"}]
}
【问题讨论】:
-
您在
failed_tests.each do |hash|块中的某个地方有什么问题?你没有说出来。您希望该方法做什么? -
是的,对不起。该方法应返回
final_result,其中还应包含failed_tests具有2 个不同哈希值的数组(不同测试的结果和比较)。目前,正如您从示例中看到的那样 - 两个哈希实际上是相同的,因此我认为 smthn 在failed_tests.each do |hash|中是错误的 -
@Mikhah 很高兴你表现出努力,但很难读懂你的方法。如果您想要答案,请提供您的输入(2 个哈希)和您希望成为结果的哈希。
-
@sawa ofc,我已经更新了问题
-
@MarcinKołodziej 抱歉,点击错误)我已经更新了问题
标签: arrays ruby iterator ruby-hash