我对一个基本的Rails应用程序进行了一组相当简单的Cucumber测试,尽管我预计它们会失败,但它们还是会通过。这些测试只是导航到一个静态页面,并测试页面上是否存在特定文本。
cucumber 测试之一如下:
Scenario: Visit the About screen
Given I am on the About page
Then I should see "Version"
步骤定义如下:
Given 'I am on the About page' do
visit "/about"
end
Then 'I should see {string}' do |page_text|
page.has_text?(page_text)
end
页面本身是在about.html.erb中定义的,并具有以下内容
<h1>StaticPages#about</h1>
<p>Find me in app/views/static_pages/about.html.erb</p>
该测试显然应该失败,因为它不包含文本“Version”,但它通过了。我怎么知道为什么测试通过了?调试这类问题的最佳方法是什么?
1条答案
按热度按时间vhmi4jdf1#
它通过了,因为你实际上没有测试任何东西。
page.has_text?(page_text)
只是一个返回true
或false
的 predicate ,相反,您需要设置一个Assert,该Assert将在失败的情况下引发错误。您没有指明您使用的是RSpec还是minitest,而是沿着以下方式进行说明或
应该是你用的