首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜不接受Capybara Minitest Spec断言

黄瓜不接受Capybara Minitest Spec断言
EN

Stack Overflow用户
提问于 2015-09-10 17:31:25
回答 2查看 613关注 0票数 3

我在Rails 4.2中使用Cucumber with Capybara,但我不使用RSpec。我一直在和Minitest在一起。在我的大多数测试中,我都使用了minitest:spec。

每当我试图在Cucumber步骤中使用使用最小或最小:spec语法的make断言时,我就会得到一个错误,说明断言方法是未定义的。例如,这一步:

代码语言:javascript
复制
Then (/^the state selector has no states$/) do
  page.wont_have_selector(".my-css-class", :visible)
end

给出这个错误

代码语言:javascript
复制
undefined method `refute_selector' for nil:NilClass (NoMethodError)

(page.wont_have_selector是最小方法refute_selector的最小规范语法)

我有一个包含以下内容的文件features/support/minitest.rb

代码语言:javascript
复制
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测试部分

代码语言:javascript
复制
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'
end

Gemfile.lock包括以下内容

代码语言:javascript
复制
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特有的最小断言没有被识别。如果我将步骤内容更改为:

代码语言:javascript
复制
assert true
refute false

然后它就过去了。此外,Capybara断言在test/features目录中可以很好地工作,用于在Cucumber之外进行集成测试。

我认为我必须在features/suport/minitest.rb中添加一些东西,这样才能将Capybara最小的断言添加到Cucumber世界,但我不知道它是什么。

编辑

实际上,只有Capybara最微小的断言的规范版本才会出现这个问题。如果我将步骤的内容更改为:

代码语言:javascript
复制
refute_selector(".my-css-class", :visible)

那就成功了。

编辑

我想我重新打开的是错误#10 in capybara_minitest_spec gem。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-31 12:27:02

将这些代码放入features/support/env.rb

代码语言:javascript
复制
Before do
  Thread.current[:current_spec] = self
end

这是[医]正常氏固定器 for capybara_minitest_spec添加对黄瓜的支持。

票数 0
EN

Stack Overflow用户

发布于 2015-09-15 22:46:55

你可以试试

代码语言:javascript
复制
require 'capybara/cucumber'

在你的minitest.rb里。如果因为需要“capybara/rspec/matcher”(尽管该文件实际上不需要rspec)而导致问题,那么您就可以这样做了。

代码语言:javascript
复制
World(Capybara::DSL)

然后实现测试环境所需的前后挂钩(请参阅cucumber.rb )

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

https://stackoverflow.com/questions/32508248

复制
相关文章

相似问题

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