如何在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