鉴于以下代码,当我遇到失败时,我希望看到父和子的差异都显示出来。目前,如果我在儿童级别上有不匹配的情况,我只会得到反馈,即我的父母不包含预期的孩子,而不是我的实际孩子。:
RSpec::Matchers.define :have_categories do |expected|
match do |actual|
expected.each do |ex|
lines = ex.map do |ex_line|
an_instance_of(Model::SubCategory).and(have_attributes(ex_line))
end
expect(actual.categories).to include(an_instance_of(Model::Category).and(
have_attributes(sub_categories: contain_exactly(*lines))))
end
end
end
答案 0 :(得分:2)
基本上,您需要实现failure_message
方法以格式化预期的错误消息,在这里您可以创建一个您希望看到的差异字符串:
RSpec::Matchers.define :have_categories do |expected|
match do |actual|
expected.each do |ex|
lines = ex.map do |ex_line|
an_instance_of(Model::SubCategory).and(have_attributes(ex_line))
end
expect(actual.categories).to include(an_instance_of(Model::Category).and(
have_attributes(sub_categories: contain_exactly(*lines))))
end
failure_message do |actual|
# here you are able to use both `actual` and `expected`
# to create your error message
end
end
end
请提供有关您域名的更多信息,以便我尽力帮您准备正确的错误消息。
希望有所帮助!