耙子测试没有在最小的时候进行水豚测试

时间:2013-11-05 22:42:39

标签: ruby-on-rails capybara minitest

我正在设置一个基本模板,用于在rails应用程序中进行水豚功能测试。我也使用MiniTest而不是RSPEC。

运行Rake测试似乎没有进行我的功能测试。我在文件中有一个测试,运行rake测试不会改变断言的数量。当我进行rake测试时,不会显示跳过测试。

以下是存储库的链接:https://github.com/rrgayhart/rails_template

以下是我遵循的步骤

  1. 我将其添加到Gemfile并运行了包

    group :development, :test do
      gem 'capybara'
      gem 'capybara_minitest_spec'
      gem 'launchy'
    end
    
  2. 我将此添加到test_helper

    require 'capybara/rails'
    
  3. 我创建了一个文件夹test / features

  4. 我创建了一个名为drink_creation_test.rb的文件

  5. 以下是该功能测试文件的代码

    require 'test_helper'
    
    class DrinkCreationTest < MiniTest::Unit::TestCase
    
      def test_it_creates_an_drink_with_a_title_and_body
          visit drinks_path
          click_on 'new-drink'
          fill_in 'name', :with => "PBR"
          fill_in 'description', :with => "This is a great beer."
          fill_in 'price', :with => 7.99
          fill_in 'category_id', :with => 1
          click_on 'save-drink'
          within('#title') do
            assert page.has_content?("PBR")
          end
          within('#description') do
            assert page.has_content?("td", text: "This is a great beer")
          end
      end
    
    end
    
  6. 我认为我遇到的问题是没有正确连接。 如果我能提供其他任何可能有助于诊断此问题的信息,请告诉我。

2 个答案:

答案 0 :(得分:5)

这里有很多事情要做。首先,默认的rake test任务不会选择不在默认测试目录中的测试。因此,您需要移动测试文件或添加新的rake任务来测试test/features中的文件。

由于您使用的是capybara_minitest_spec,因此您需要在测试中加入Capybara::DSLCapybara::RSpecMatchers。并且因为您在此测试中未使用ActiveSupport::TestCase或其他Rails测试类,您可能会在数据库中看到不一致,因为此测试在标准rails测试事务之外执行。

require 'test_helper'

class DrinkCreationTest < MiniTest::Unit::TestCase
  include Capybara::DSL
  include Capybara::RSpecMatchers

  def test_it_creates_an_drink_with_a_title_and_body
      visit drinks_path
      click_on 'new-drink'
      fill_in 'name', :with => "PBR"
      fill_in 'description', :with => "This is a great beer."
      fill_in 'price', :with => 7.99
      fill_in 'category_id', :with => 1
      click_on 'save-drink'
      within('#title') do
        assert page.has_content?("PBR")
      end
      within('#description') do
        assert page.has_content?("td", text: "This is a great beer")
      end
  end

end

或者,您可以使用minitest-railsminitest-rails-capybara生成来运行这些测试。

$ rails generate mini_test:feature DrinkCreation
$ rake minitest:features

答案 1 :(得分:2)

我相信minitest在使用水豚时有自己的铁杆宝石:minitest-rails-capybara

按照说明可能会有所帮助,但我以前从未设置过带有迷你测试的水豚。