首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何测试水豚中是否存在提交按钮?

如何测试水豚中是否存在提交按钮?
EN

Stack Overflow用户
提问于 2012-09-25 05:59:17
回答 6查看 17.9K关注 0票数 17

我想在rspec中测试一下是否存在提交按钮。我也在用水豚。

我试过了:

should have_tag("input","Submit button")

should have_content("Submit, button")

但它要么会引发异常,要么会给出误报。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-18 01:11:03

这些都是很好的建议,但是如果你想确认它是一个按钮,并且它有正确的值(用于显示),你必须更详细一些:

page.should have_selector("input[type=submit][value='Press Me']")

我不知道现有的匹配器可以做到这一点。这是我写的一个自定义RSpec2匹配器:

RSpec::Matchers.define :have_submit_button do |value|
  match do |actual|
    actual.should have_selector("input[type=submit][value='#{value}']")
  end
end

这是zwippie版本( 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

我将其与其他自定义匹配器一起保存在spec/support/matchers/request_matchers.rb中。RSpec会自动拾取它。由于这是一个RSpec匹配器(而不是Capybara查找器),它将在功能规格(Capybara)和视图规格(没有Capybara的RSpec)中工作。

功能规格用法:

page.should have_submit_button("Save Me")

查看规范使用情况(调用render之后):

rendered.should have_submit_button("Save Me")

请注意,如果您在Capybara请求规范中,并且想要与提交按钮进行交互,这会容易得多:

click_button "Save Me"

不能保证它实际上是一个提交按钮,但你的功能规范应该只是测试行为,而不是担心细节级别。

票数 36
EN

Stack Overflow用户

发布于 2015-02-17 17:29:11

有一个内置的matcher has_button?

使用RSpec,您可以获得如下断言

page.should have_button('Submit button')

或者使用新的RSpec 3语法:

expect(page).to have_button('Submit button')
票数 17
EN

Stack Overflow用户

发布于 2013-12-31 04:57:17

我有一个(用于黄瓜):

Then /^I should see "([^"]*)" button/ do |name|
  should have_button name
end

否定用法: have_no_button

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12573518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档