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

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

 allow(company).to receive(:foo){300} 

如何使用ActiveSupport::TestCase存根方法?

我有这样的测试。

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

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 

Minitest对于模拟有一些有限的function,但我建议使用mocha gem来存储这些类型的存根。

Mocha的语法正是您在注释掉的行中所拥有的:

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