[英]minitest testing and code coverage
我使用mini-test
來測試框架。 我使用omniauth
gem進行身份驗證。 我使用simplecov
進行代碼覆蓋。 我使用"bundle exec rake"
或"rake minitest:controllers"
運行我的測試。 我舉一個控制器的例子。 當我運行rake minitest:controllers
,控制器代碼覆蓋率變為100%。 但是,當我運行bundle exec rake
,控制器代碼覆蓋率變為60%。
SessionsController.rb代碼:
class SessionsController < ApplicationController
def create
auth = request.env["omniauth.auth"]
person=Person.find_by_provider_and_uid(auth.provider,auth.uid) || Person.create_with_omniauth(auth)
redirect_to root_path
end
end
SessionsController_test.rb
require "minitest_helper"
describe SessionsController do
before do
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:identity]
@person = Fabricate.build(:person)
end
it "should create authentication" do
assert_difference('Person.count') do
post :create, :provider => "identity"
end
assert_redirected_to root_path @person
end
end
我想知道如果我在寫測試時錯過了一點。 我等你的想法。 提前致謝。
minitest_helper.rb
require 'simplecov'
Simplecov.start
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require "minitest/autorun"
require "minitest/rails"
require "minitest/pride"
require 'database_cleaner'
require "minitest/rails/capybara"
require "minitest-mongoid"
DatabaseCleaner[:mongoid].strategy = :truncation
#OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:identity, {
:uid => '12345'
})
class MiniTest::Spec
before :each do
DatabaseCleaner.start
end
after :each do
DatabaseCleaner.clean
end
end
沒有更多信息很難說清楚。
首先嘗試rake minitest:all
並用結果更新你的問題。
如果以前的測試沒有得到積極的結論,請嘗試以下方法:
namespace :test do
task :coverage do
require 'simplecov'
SimpleCov.start 'rails' # feel free to pass block
Rake::Task["test"].execute
end
end
請告訴我們,我們可以編輯或更新答案。
眾所周知,Minitest有一些問題。 我相信它仍在進行中,不確定它們現在的位置。 它不是你,它是最小的。 在某些情況下,這種解決方法有所幫助,也許它對您有幫助。
根據Simplecov的文檔 ,您只需在test/test_helper.rb
頂部添加這些行:
# test/test_helper.rb
require 'simplecov'
SimpleCov.start
# ...
另外不要忘記在測試組中安裝simplecov gem:
# Gemfile
# ...
group :test do
gem 'simplecov'
end
就是這樣。
Rails 6 :我遇到了Rails 6的一些問題並測試了並行化,因此您可以在test/test_helper.rb
停用它:
# test/test_helper.rb
# ...
class ActiveSupport::TestCase
# ...
# parallelize(workers: 2)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.