MiniTest行为奇怪,并且跳过集成测试文件夹

时间:2012-05-15 16:21:39

标签: ruby-on-rails-3 bdd minitest

学习如何测试很难!我只是想让MiniTest跑步和男人,这是一个斗争。我看过Ryan的RailsCasts并阅读了我在这个主题上可以找到的所有文档。

我只是在做(或试图)测试帮助程序,模型和请求。现在,我的模型和帮助器测试只是被忽略了。

但是,我编写了真正的身份验证集成测试,它们甚至都没有运行!看看这个:

➜  myapp git:(master) rake
==============================================================================
SUITE test/factories,test/helpers,test,test/models,test/requests (SEED 41025)
==============================================================================
User
     0001 must be a real test                                  0:00:00.005 FAIL
 0:00:00.005 ERROR
==============================================================================
SUITE test/factories,test/helpers,test,test/models,test/requests (SEED 12794)
==============================================================================
SessionsHelper
     0001 must be a real test                                  0:00:00.006 FAIL
 0:00:00.006 ERROR
Errors running models, helpers!

嗯,这只是超级,它失败了那些像它应该的那样。现在为什么不运行“test / requests”目录中的东西!

require 'minitest_helper'

describe "Login Integration" do

  it "authenticates a user with a password" do
    login_user
    assert page.has_content?('Logged in')
  end

  it "fails to authenticate a user with a mismatched password" do
    user = FactoryGirl.create(:user)
    visit login_path
    fill_in "Email", :with => user.email
    fill_in "Password", :with => "bad password"
    click_button "Log In"
    assert page.has_content?('Invalid email or password')
  end

  it "logs out a user" do
    login_user
    click_link "Log Out"
    assert page.has_content?('Logged out')
  end

end

我可以在文件中间键入“Joe Blow”,我甚至没有收到语法错误。这个文件没有任何理由不被拿起。请参阅名称“登录集成”?好吧,它在我的minitest_helper.rb中受到限制:

class IntegrationTest < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
  register_spec_type(/integration$/i, self)
end

如果我们正在使用它,那么在Rails 4代码库中包含这些东西肯定有点早。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

我很幸运,我想到了这一点。测试失败2次后测试停止。我没有找到任何关于此的文件。

因此,如果您完成测试,只需这样做:

describe User do

  it "needs a real test"

end

这将导致它“跳过”测试,并继续。

不要这样做:

describe User do

  it "must have a real test" do

    flunk "needs a real test"

  end

end

因为如果你这样做,测试将神秘地停止,并且没有任何东西可以告诉你原因。

我喜欢将我的模型和辅助测试删除。然后我构建我的集成测试,并补充我在此过程中需要的任何单元测试。我仍然可以使用MiniTest,它只是在2次错误后停止。我没有读过代码,也许有一些方法可以配置这个阈值。