簡體   English   中英

如何測試是否在對象上調用方法 - Rails RSpec

[英]How to test if a method is called on an object - Rails RSpec

我有兩個型號,Foo和Bar。 Foo有一個名為ask_bar_to_do_something的方法,它在保存Foo實例后調用。 此方法不會更改此Foo實例的狀態。

我想讓這個方法返回1,並創建一個創建Foo對象並檢查返回值的lambda塊。 有一個更好的方法嗎?

謝謝。

為什么不模擬對象並期望方法調用?

class Foo < ActiveRecord::Base
  after_create :ask_bar_to_do_something

  def ask_bar_to_do_something
    #blah blah blah
  end
end

如果您使用工廠來創建對象

Foo.any_instance.should_receive(:ask_bar_to_do_something)
Factory(:foo)

其他

foo = Foo.new(:attr1 => 'value1', :attr2 => 'value2')
foo.should_receive(:ask_bar_to_do_something)
foo.save

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM