学习如何测试很难!我只是想让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代码库中包含这些东西肯定有点早。谁能告诉我我做错了什么?
答案 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次错误后停止。我没有读过代码,也许有一些方法可以配置这个阈值。