带有MiniTest::Spec的水豚验收DSL



Capybara的自述文件(参见使用Capybara与MiniTest::Spec)说,我可以做到这一点,如果我包括正确的模块,但它没有给出任何说明性的例子,如何…我试过包括这样的模块:

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

在这篇文章中有一个很好的描述,你应该如何使MinitTest::Spec运行与水豚。在这里,他将Capybara::DSL包含到所有规范的基类中,如

class RequestSpec < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
end

这在我们的设置中工作得很好,但当然它不会重新打开MiniTest::Spec。

下面是一个简单的test_helper工具来运行函数&在Rails中使用spec语法进行集成测试。基于tenderlove的一个要点,上面提到的文章是:MiniTest with Capybara,以及大量的修修补补。source-poring .

https://gist.github.com/1607879

应将minitest-rails-capybara gem添加到Gemfile中,并在描述末尾添加"feature"一词,如下所示:

<>之前feature' RewardTerms feature', %q{为了得到我能得到的所有奖励条件作为API客户端我想列出所有有效的RewardTerms}做背景做set_api_headers结束场景'RewardTerm索引'做访问'/reward_terms '#……结束结束之前

特殊的"feature"是大小写区分的,可以是"browser"。您可以通过在test_helper.rb中添加一行来定制它:

<>之前小型试验::规范。register_spec_type (/FooBar z/我,水豚::Rails:: TestCase)

最新更新