son*_*002 17 ruby rspec capybara
我想在rspec中测试是否存在提交按钮.我也在使用水豚.
我试过了:
should have_tag("input","Submit button")
Run Code Online (Sandbox Code Playgroud)
和
should have_content("Submit, button")
Run Code Online (Sandbox Code Playgroud)
但它要么引发异常,要么给出误报.
Jim*_*art 34
这些都是很好的建议,但是如果你想确认它是一个按钮并且它具有正确的值(用于显示),你必须更加详细一些:
page.should have_selector("input[type=submit][value='Press Me']")
Run Code Online (Sandbox Code Playgroud)
我不知道现有的匹配器是做到这一点的.这是我写的自定义RSpec2匹配器:
RSpec::Matchers.define :have_submit_button do |value|
match do |actual|
actual.should have_selector("input[type=submit][value='#{value}']")
end
end
Run Code Online (Sandbox Code Playgroud)
这是RSpec3版本(@zwippie提供):
RSpec::Matchers.define :have_submit_button do |value|
match do |actual|
expect(actual).to have_selector("input[type=submit][value='#{value}']")
end
end
Run Code Online (Sandbox Code Playgroud)
我将其spec/support/matchers/request_matchers.rb与其他自定义匹配器保持一致.RSpec会自动选择它.由于这是一个RSpec匹配器(而不是Capybara finder),它可以在功能规格(Capybara)和视图规格(没有Capybara的RSpec)中工作.
功能规格用法:
page.should have_submit_button("Save Me")
Run Code Online (Sandbox Code Playgroud)
查看规范用法(致电后render):
rendered.should have_submit_button("Save Me")
Run Code Online (Sandbox Code Playgroud)
请注意,如果您处于Capybara请求规范中,并且您希望与提交按钮进行交互,则更容易:
click_button "Save Me"
Run Code Online (Sandbox Code Playgroud)
不能保证它实际上是一个提交按钮,但您的功能规格应该只是测试行为而不是担心这个细节级别.
kof*_*rei 16
有一个内置匹配器has_button?.
使用RSpec你可以有一个断言
page.should have_button('Submit button')
Run Code Online (Sandbox Code Playgroud)
或者使用新的RSpec 3语法:
expect(page).to have_button('Submit button')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16366 次 |
| 最近记录: |