我正在使用 Steak 进行验收测试,因为我根本不喜欢 Cucumber,尽管我在测试的方式中使用了一些 Cucumber 概念。我喜欢声明式和命令式的测试风格,我将一些期望抽象到精心设计的自定义 rspec 匹配器中,这些匹配器在 match 方法中使用其他匹配器,这里有一个例子:
RSpec::Matchers.define :show_post do |post|
match do |page|
within '.post' do
page.should have_content post.title
page.should have_content post.tagline
page.should have_content post.body
page.should list_author post.author
end
end
end
我遇到的唯一问题是,如果我的匹配器失败,我会收到一条通用消息,它不会让我了解丢失的内容,而我真正想要的是现在不满足构成自定义匹配器的期望之一.
我已经忍受这种麻烦有一段时间了,因为我真的很喜欢能够做到的表现力:
page.should show_post Post.last