Тестирующая память

У меня дорогой метод называется 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

7
задан Austin 9 September 2011 в 20:45
поделиться