У меня дорогой метод называется Calculate_total
. Мне нужен метод, называемый Всего
, который вернет результат Calculate_total
. Последующие вызовы на в общей сложности
должны вернуть предыдущий результат Calculate_total
.
Я хочу сделать это в тестовом пути. Вот мои тесты (я использую rspec):
describe Item do
describe "total" do
before do
@item = Item.new
@item.stub!(:calculate_total => 123)
end
it "returns the calculated total" do
@item.total.should == 123
end
it "subsequent calls return the original result" do
previous_total = @item.total
@item.total.should equal(previous_total)
end
end
end
Это не очень хороший тест, потому что следующий метод делает пропуск по тестам, но я ожидал, что второй тест потерпел неудачу:
def total
calculate_total
end
Причина в Calculate_total
возвращает FIXNUM
, поэтому Ruby не видит результата как 2 различных объектов. Я ожидал, что второй тест потерпел неудачу, так что тогда я мог сделать следующее, чтобы сделать его проходом:
def total
@total ||= calculate_total
end
Кто-нибудь знает лучший способ проверить это?
Я не думаю, что это лучший / правильный способ тестирования Это, но я остановился на этом: https://gist.github.com/1207270