Tag: minitest

Rails 4 Minitest测试虚拟属性

所以我有一个类TimeBank,它正在更新,并且正在获得两个新的虚拟属性,它们将操纵另外两个现有属性(DB列)。 class TimeBank < ActiveRecord::Base # validations, consts, few other methods omitted for brevity def date_worked @date_worked ||= self.start.to_date rescue Date.current end def date_worked=(date_worked_val) self.attributes['date_worked'] = date_worked_val end def hours_worked @hours_worked ||= hours rescue NoMethodError nil end def hours_worked=(hours_worked_val) self.attributes['hours_worked'] = hours_worked_val end def hours if attributes["hours"] read_attribute(:hours).to_f else ((finish – start)/1.hour).to_f end rescue NoMethodError […]

NoMethodError:minitest和mocha的未定义方法`mock’

我正在为Rails 3开发一个gem,并在travis-ci.org的Ruby 1.8.7下运行它时遇到了我的测试套件中的错误: /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:874:in `_run_suite’: undefined method `run’ for # (NoMethodError) 69 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:866:in `map’ 70 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:866:in `_run_suite’ 71 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:853:in `_run_suites’ 72 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:853:in `map’ 73 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:853:in `_run_suites’ 74 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:826:in `_run_anything’ 75 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:1015:in `run_tests’ 76 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:1002:in `send’ 77 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:1002:in `_run’ 78 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:1001:in `each’ 79 from /home/travis/.rvm/gems/ruby-1.8.7-p370/gems/minitest-3.5.0/lib/minitest/unit.rb:1001:in `_run’ […]

如何在集成测试中编写用于签署用户的快捷方式?

在这个问题的讨论的启发下,我想为我的集成测试编写一个登录方法。 在我的test_helper.rb我甚至找到了这样一个方法,但它是在ActiveSupport::TestCase类中定义的,我的测试inheritance自ActionDispatch::IntegrationTest 。 所以我复制了方法并将它(在test_helper.rb )放入ActionDispatch::IntegrationTest类中。 但它不起作用,我的测试失败了这条消息: Capybara::ExpectationNotMet: expected “data:,” to include “Study | Word Up” 它实际上从未在浏览器中实际打开应用程序。 所以我的问题是,我可以在集成测试中使用这样的快捷方式,如果是的话,怎么样? 我正在使用带有has_secure_password的构建身份validation和Michael Hartl在他的Railstutorial中显示的机制。 这是我的test_helper.rb : ENV[‘RAILS_ENV’] ||= ‘test’ require File.expand_path(‘../../config/environment’, __FILE__) require ‘rails/test_help’ require ‘minitest/rails’ require ‘minitest/rails/capybara’ require ‘capybara/rails’ require ‘capybara/poltergeist’ class ActiveSupport::TestCase ActiveRecord::Migration.check_pending! fixtures :all # Logs in a test user. def log_in_as(user, options = {}) password = […]

使用Minitest的Rails,如何使用rake运行每次测试时自动运行RuboCop?

当我运行以下命令时,我希望RuboCop在测试运行之前检查我指定的应用程序目录: bundle exec rake test

如何使用Minitest测试OmniAuth的SessionsController

我正在尝试使用Minitest测试我的Facebook登录代码,但它并不顺利。 当我尝试get :auth, ‘provider’ => ‘facebook’在测试中,测试返回undefined method ‘[]’ for nil:NilClass ,如果我尝试get :new它传递,但auth不被调用。 如何使用omniauth成功重定向到auth? 这是我的源代码。 测试/控制器/ sessions_controller_test.rb require ‘test_helper’ class SessionsControllerTest ‘facebook’, ‘uid’ => ‘123451234512345’, ‘info’ => {’email’ => ‘testuser@testmail.com’, ‘name’ => ‘test’, ‘image’ => ”} }) request.env[‘omniauth.env’] = OmniAuth.config.mock_auth[:facebook] get :auth end end 应用程序/控制器/ sessions_controller.rb class SessionsController < ApplicationController def auth if(env['omniauth.params']['type'] == 'signin') if […]

使用Minitest测试自定义validation器

我有多个模型与电子邮件validation。 因此,我已将validation提取到自定义validation器中。 我按照Rails指南的教程来说明这一点。 class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[az]{2,})\z/i record.errors[attribute] << (options[:message] || "is not an email") end end end 到现在为止还挺好。 但是,由于我已经将电子邮件validation的function提取到了自己的范围内,我还想单独测试它。 我不想为每个模型添加相同的电子邮件格式测试。 我发现了另一个问题 ,但也对RSpec提出了同样的问题 。 但由于我还没有使用存根和模拟,我不知道如何将测试移植到Minitest测试。 我没有找到任何用Minitest测试自定义validation器的资源。 有人知道如何在Minitest中为自定义validation器编写此类测试(不使用规范!)?

minitest:未定义的方法`get’

我需要用minitest来测试我的控制器。 我试过了: describe ‘CommentsController’ do it “should get index” do get :index assert_response :success end end 和 class CommentsControllerTest < MiniTest::Unit::TestCase def test_should_get_index get :index assert_response :success end end 但我有“未定义的方法`get’”错误

Rails在测试失败时最小的崩溃

当我运行rails test (Rails 5和Ruby 2.4.2)时,每次测试失败时Minitest都会崩溃。 例如,我通过将assert切换为assert_not强制简单测试失败: Failure: TransactionTest#test_transaction_should_be_valid [/home/…/test/models/transaction_test.rb:11]: Expected true to be nil or false /home/…/.rvm/gems/ruby-2.4.2/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method’: undefined method `test_transaction_should_be_valid’ for class `Minitest::Result’ (NameError) 如果测试通过,那么整个报告都会成功,我会收到报告摘要。 如果只有一个测试失败,我会得到上面的错误报告。 我在transaction_test.rb文件中定义了test_transaction_should_be_valid ,certificate它在测试通过时运行顺畅。 我现在坚持这个。 关于可能导致这种情况的任何想法?

在minitest中使用帮助器

我正在尝试使用minitest测试我的app类,但是我收到一条错误,指出undefined method image_path 。 我怎么能绕过这个? app_test.rb require ‘test_helper’ class AppTest < ActiveSupport::TestCase setup do @app = apps(:app_one) end test 'should have icon_url' do assert(@app.icon_url == image_path('icn-medium-norm.png')) end end 应用程序/模型/ app.rb class App (time) { where(‘created_at > ?’, time) } scope :ios, -> { where(“app_type = ‘ios’ “) } scope :android, -> { where(“app_type = ‘android’ […]

Spork + Minitest

任何人都可以解释如何使用Spork与Minitest。 我看到有一个spork-minitestgem ,但目前尚不清楚如何使用它。