小编sal*_*ost的帖子

Capybara和Rspec:在()和has_selector()中使用的正确方法是什么?

我使用rspec 2.6.0和Capybara 1.1.1进行验收测试.
有如下视图:

<tr >
  <td>Team 3 Name</td>
  <td>true</td>
  <td><a href="/teams/3">Show</a></td>
  <td><a href="/teams/3/edit">Edit</a></td>
  <td><a href="/teams/3">Deactivate</a></td>
</tr>
<tr >
  <td>Team 4 Name</td>
  <td>true</td>
  <td><a href="/teams/4">Show</a></td>
  <td><a href="/teams/4/edit">Edit</a></td>
  <td><a href="/teams/4">Deactivate</a></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我想写一个验收测试,说明:"团队3没有'停用'链接." 我希望以下内容失败:

within('tr', :text => 'Team 3 Name') do |ref|
  page.should_not have_selector('a', :text => 'Deactivate')
end
Run Code Online (Sandbox Code Playgroud)

但它过去了.为了进一步测试正在发生的事情,我写了荒谬的:

lock = false
within('tr', :text => 'Team 3 Name') do |ref|
  page.should have_selector('a', :text => 'Deactivate')
  page.should_not have_selector('a', :text => 'Deactivate')
  lock = true
end
lock.should be_true
Run Code Online (Sandbox Code Playgroud)

哪个也通过了.

我假设has_selector()调用的作用域不受within()块的限制,但我不确定为什么会这样.水豚文档使用这种模式,似乎没有提到任何陷阱.在内部使用以限制我的选择范围的正确方法是什么?谢谢./ Salernost

ruby rspec ruby-on-rails capybara

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

capybara ×1

rspec ×1

ruby ×1

ruby-on-rails ×1