Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rspec 除了第一个方法外,我可以存根所有对该方法的调用吗?_Rspec - Fatal编程技术网

Rspec 除了第一个方法外,我可以存根所有对该方法的调用吗?

Rspec 除了第一个方法外,我可以存根所有对该方法的调用吗?,rspec,Rspec,使用Rspec,是否有一种方法可以存根除第一个方法之外的所有方法调用 例如: class Book def foo "Book#foo()" end end 规范中: it 'x' do # .... (do something to stub all but the first method call to `Book#foo`).... b = Book.new expect(b.foo).to eq('Book#foo()') expect(b.foo

使用Rspec,是否有一种方法可以存根除第一个方法之外的所有方法调用

例如:

class Book
  def foo
    "Book#foo()"
  end
end
规范中:

it 'x' do
  # .... (do something to stub all but the first method call to `Book#foo`)....

  b = Book.new
  expect(b.foo).to eq('Book#foo()') 
  expect(b.foo).to be_nil 
  expect(b.foo).to be_nil 
end
有人吗?

您可能会在第一个中使用和


也可以看看?

是的,这是可行的。我还没有实际测试过,但如果我的记忆正常,这应该可以:

it 'does some funky stubbing' do
  book = Book.new

  # the first time it will not be stubbed, all subsequent times it will return nil
  allow(book).to receive(:foo) { book.foo, nil }

  expect(book.foo).to eq('Book#foo()') 
  expect(book.foo).to be_nil 
  expect(book.foo).to be_nil 
end

而不是链接。。举个例子来解释这个概念,这将使你的答案更加独立。你能举个例子,让我们明白你的真正意思吗?非常感谢。我现在每天都在学习..用理论来理解事物非常需要例子。于是我问。。