gpt4 book ai didi

ruby-on-rails - minitest 测试和代码覆盖率

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:12 25 4
gpt4 key购买 nike

我使用mini-test 来测试框架。我使用 omniauth gem 进行身份验证。我使用 simplecov 进行代码覆盖。我使用 "bundle exec rake""rake minitest:controllers" 运行我的测试。我举一个 Controller 的例子。当我运行 rake minitest:controllers 时, Controller 代码覆盖率变为 100%。但是,当我运行 bundle exec rake 时, Controller 代码覆盖率变为 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

session Controller _测试.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

最佳答案

根据 Simplecov's documentation ,您只需在 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

关于ruby-on-rails - minitest 测试和代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com