如何在测试结果中使用RED颜色制作黄瓜抛出异常

时间:2015-10-06 19:47:02

标签: ruby json cucumber

这是基于我之前的问题Is there any way the JSON comparison ignores the whole section misplaced?

我编写了一个逻辑来比较两个json忽略数组或块顺序更改(可能不是最佳解决方案,但它可以工作)。但是,虽然它比较,当我用'if..else'语句验证用户编写的代码时,黄瓜完成测试&输出结果,它会在结果文件中始终输出GREEN。因此用户无法确定测试实际通过或失败。当我使用以下语句运行黄瓜进行比较时,如果测试失败,则结果将以红色显示。

expect(doc1).to eq(doc2)

如果使用以下比较逻辑对结果中的测试失败,有人可以帮助如何使黄瓜抛出异常或任何使用RED颜色的黄瓜失败。

require 'json'

doc1 = '{
    "keys": [
        {
            "KayA": "Value_A",
            "KeyB": "value_B"
        },
        {
            "KayC": "Value_C",
            "KeyD": "value_D"
        }
    ]
}'

doc2 = '{
    "keys": [
        {
            "KayC": "Value_C",
            "KeyD": "value_D"
        },
        {
            "KayA": "Value_A",
            "KeyB": "value_B"
        }
    ]
}'

doc1 = JSON.parse(doc1)
doc2 = JSON.parse(doc2)

puts "doc1 : #{doc1}"
puts "doc2 : #{doc2}"

#puts "values....: #{doc1}"

@final_array = Array.new

doc1.each { |k, v|
  @doc1_key = k
  @doc1_value = v
  #puts @doc1_key
  #puts @doc1_value
  @doc1_array_size = @doc1_value.size
  puts "@doc1_array_size...: #{@doc1_array_size}"
  @doc1_value.each { |lhsval|
    puts "fresh start first loop......"
    puts "lhsval...: #{lhsval}"
    doc2.each { |act_k, act_v|
        @doc2_key = act_k
        @doc2_value = act_v
        #puts @doc2_key
        #puts @doc2_value
        puts "fresh start second loop......"
        @doc2_value.each { |rhsval|
          puts "rhsval...: #{rhsval}"
            if lhsval == rhsval then
              #puts "This #{lhsval} is same as #{rhsval}"
              break
            else
              puts "This #{lhsval} is not same as #{rhsval}"
              @final_array << lhsval
            end
        }
    }
  }
}

puts "@final_array size is ...: #{@final_array.size}"

if @final_array.size == @doc1_array_size then
  puts "Two JSON objects are mismatching....."
else
  puts "Both the documents are same...."
end

0 个答案:

没有答案