ruby-on-rails 铁轨 cucumber 测试变绿色在红色

eeq64g8w  于 2023-05-19  发布在  Ruby
关注(0)|答案(1)|浏览(184)

我对一个基本的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”,但它通过了。我怎么知道为什么测试通过了?调试这类问题的最佳方法是什么?

vhmi4jdf

vhmi4jdf1#

它通过了,因为你实际上没有测试任何东西。page.has_text?(page_text)只是一个返回truefalse的 predicate ,相反,您需要设置一个Assert,该Assert将在失败的情况下引发错误。您没有指明您使用的是RSpec还是minitest,而是沿着以下方式进行说明

expect(page).to have_text(page_text) # Rspec

assert_text(page_text) # minitest

应该是你用的

相关问题