水豚验收DSL与MiniTest ::规格?
问题描述:
水豚的自述文件(见Using Capybara with MiniTest::Spec)说我可以做到这一点,如果我正确地包括模块,但它没有给出任何说明性示例如何......我试过包括这样的模块:水豚验收DSL与MiniTest ::规格?
class MiniTest::Spec
include Capybara::DSL
end
...无济于事。我一直得到这个错误:
<main>': undefined method
feature' for main:Object (NoMethodError)
我怎样才能得到它的工作,因为它写在注释掉的代码?
规格/接受/ API/reward_terms_spec.rb:
require "#{Dir.pwd}/spec/acceptance/acceptance_helper"
# this syntax works...
describe 'reward terms acceptance test' do
include Capybara::DSL
describe '#index' do
specify {
visit '/reward_terms'
# ...
}
end
end
# this syntax doesn't work...
# feature 'RewardTerms', %q{
# In order to get all reward terms available to me
# As an API client
# I want to list all active RewardTerms
# } do
# background do
# set_api_headers
# end
# scenario 'RewardTerm index' do
# visit '/reward_terms'
# ...
# end
# end
规格/接受/ acceptance_helper.rb:
ENV["RAILS_ENV"] = "test"
require "#{Dir.pwd}/config/environment"
require 'minitest/autorun'
require 'capybara/rails'
def set_api_headers(device_id = 'abcd1234')
header 'Accept', 'application/json'
header 'X-Device-Id', device_id
end
答
有在this post一个很好的描述你应该如何让MinitTest :: Spec运行于水豚。在那里,他主要包括水豚:: DSL到基类的所有规格的中
class RequestSpec < MiniTest::Spec
include Rails.application.routes.url_helpers
include Capybara::DSL
end
这个工程很好,而在我们的设置,但当然不会重开MINITEST ::规格。
答
下面是一个简单的test_helper设备,使用spec语法在Rails中运行功能&集成测试。根据tenderlove的要点,article mentioned above re: MiniTest with Capybara,以及很多修补程序&源泉。
答
您应该添加minitest-rails-capybara
宝石到Gemfile
并添加文字“功能”来描述的末尾,如下所示:
feature 'RewardTerms feature', %q{ In order to get all reward terms available to me As an API client I want to list all active RewardTerms } do background do set_api_headers end scenario 'RewardTerm index' do visit '/reward_terms' #... end end
特殊词“功能”是区分incensitive,和可以是“浏览器”。您可以通过添加一行到test_helper.rb
定制:
MiniTest::Spec.register_spec_type(/FooBar\z/i, Capybara::Rails::TestCase)
是啊,我看到了帖子,但只允许你使用水豚的匹配,而不是BDD DSL进行验收测试,这是什么我之后... – neezer
在[link](https://github.com/jnicklas/capybara)上,关于Capybara DSL的部分包含在“使用RSpec的Capybara”一节中,它说“最后,Capybara也来了用内置的DSL创建描述性验收测试:“。然而,在展示DSL实际运行后,它说:“'feature'实际上只是'describe ...,:type =>:request'的别名,'background'是'before'和'scenario'的别名为'它'。“所以如果你想在MiniTest中使用它,因为它是RSpec唯一的功能,所以你运气不好,但是你可能试着定义你自己的别名 – Patru
链接的博客帖子已从Posterous中删除,但是在这里是在Internet Archive:http://web.archive.org/web/20130314201201/http://code-ningja.posterous.com/73460416 –