我有一个返回给定符号价格的方法,我正在为该方法编写测试。
这是我的测试
def setup
@asset = NetAssetValue.new
end
def test_retrieve_price_for_symbol_YHOO
assert_equal(33.987, @asset.retrieve_price_for_a_symbol('YHOO'))
end
def test_retrive_price_for_YHOO
def self.retrieve_price_for_a_symbol(symbol)
33.77
end
assert_equal(33.97, @asset.retrieve_price_for_a_symbol('YHOO'))
end
这是我的方法。
def retrieve_price_for_a_symbol(symbol)
symbol_price = { "YHOO" => 33.987, "UPS" => 35.345, "T" => 80.90 }
raise Exception if(symbol_price[symbol].nil?)
symbol_price[symbol]
end
我试图通过在测试类中编写相同的方法来模拟
retrieve_price_for_a_symbol
方法,但是当我调用它时,调用发生在主类中的方法而不是测试类中的方法。如何将该方法添加到测试的元类中,以及如何调用它?请帮忙。
最佳答案
您需要模拟它,而不是在内部重新定义方法。
将测试中的方法定义替换为
@asset.expects(:retrieve_price_for_a_symbol).with('YHOO').returns(33.97)