如何存根 ActiveSupport::TestCase 中的方法

iro*_*and 4 ruby-on-rails testcase

RSpec我可以存根这样的方法:

allow(company).to receive(:foo){300}
Run Code Online (Sandbox Code Playgroud)

我怎样才能存根一个方法ActiveSupport::TestCase

我有一个这样的测试。

class CompanyTest < ActiveSupport::TestCase
  test 'foobar' do
    company = companies(:base)
    #company.stubs(:foo).returns(300)
    assert_nil(company.calculate_bar)
  end
end
Run Code Online (Sandbox Code Playgroud)

小智 5

Minitest 提供了stub一种开箱即用的方法,以防您不想使用外部工具:

require 'minitest/mock'
class CompanyTest < ActiveSupport::TestCase
  test 'foobar' do
    company = companies(:base)
    Company.stub :foo, 300 do
      assert_nil(company.calculate_bar)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)