我在Rails 4.2中使用Cucumber with Capybara,但我不使用RSpec。我一直在和Minitest在一起。在我的大多数测试中,我都使用了minitest:spec。
每当我试图在Cucumber步骤中使用使用最小或最小:spec语法的make断言时,我就会得到一个错误,说明断言方法是未定义的。例如,这一步:
Then (/^the state selector has no states$/) do
page.wont_have_selector(".my-css-class", :visible)
end给出这个错误
undefined method `refute_selector' for nil:NilClass (NoMethodError)(page.wont_have_selector是最小方法refute_selector的最小规范语法)
我有一个包含以下内容的文件features/support/minitest.rb
require 'minitest'
require "minitest/rails/capybara"
require "minitest/spec"
module MiniTestAssertions
def self.extended(base)
base.extend(MiniTest::Assertions)
base.assertions = 0
end
attr_accessor :assertions
end
World(MiniTestAssertions)这是我的Gemfile测试部分
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'mocha', require: false
gem 'cucumber-rails', require: false
gem 'database_cleaner'
end
group :test do
gem 'minitest-reporters'
gem 'minitest-rails-capybara'
gem 'minitest-spec-rails'
gem 'capybara_minitest_spec'
gem 'launchy'
gem 'selenium-webdriver'
gem 'poltergeist'
endGemfile.lock包括以下内容
capybara (2.4.4)
capybara_minitest_spec (1.0.5)
cucumber (1.3.20)
cucumber-rails (1.4.2)
minitest (5.7.0)
minitest-capybara (0.7.2)
minitest-metadata (0.5.3)
minitest-rails (2.2.0)
minitest-rails-capybara (2.1.1)
minitest-spec-rails (5.2.2)
rails (4.2.1)编辑
在Cucumber步骤文件中,只有Capybara特有的最小断言没有被识别。如果我将步骤内容更改为:
assert true
refute false然后它就过去了。此外,Capybara断言在test/features目录中可以很好地工作,用于在Cucumber之外进行集成测试。
我认为我必须在features/suport/minitest.rb中添加一些东西,这样才能将Capybara最小的断言添加到Cucumber世界,但我不知道它是什么。
编辑
实际上,只有Capybara最微小的断言的规范版本才会出现这个问题。如果我将步骤的内容更改为:
refute_selector(".my-css-class", :visible)那就成功了。
编辑
我想我重新打开的是错误#10 in capybara_minitest_spec gem。
发布于 2015-10-31 12:27:02
将这些代码放入features/support/env.rb中
Before do
Thread.current[:current_spec] = self
end这是[医]正常氏固定器 for capybara_minitest_spec添加对黄瓜的支持。
发布于 2015-09-15 22:46:55
你可以试试
require 'capybara/cucumber'在你的minitest.rb里。如果因为需要“capybara/rspec/matcher”(尽管该文件实际上不需要rspec)而导致问题,那么您就可以这样做了。
World(Capybara::DSL)然后实现测试环境所需的前后挂钩(请参阅cucumber.rb )
https://stackoverflow.com/questions/32508248
复制相似问题