método stubbed RSpec pode retornar valores diferentes em sequênci

Tenho uma família modelo com um métodolocation que mescla olocation saídas de outros objetos, Membros. (Os membros estão associados às famílias, mas isso não é importante aqui.)

Por exemplo, dado

member_1 temlocation == 'San Diego (viajando, retorna 15 de maio)' member_2 temlocation == 'San Diego'

Family.location pode retornar 'San Diego (membro_1 viajando, retorna 15 de maio)' Os detalhes não são importantes.

Para simplificar o teste de Family.location, desejo stub Member.location. No entanto, preciso que ele retorne dois valores diferentes (especificados), como no exemplo acima. Idealmente, eles seriam baseados em um atributo demember, mas simplesmente retornar valores diferentes em uma sequência seria bom. Existe uma maneira de fazer isso no RSpec?

É possível substituir o método Member.location em cada exemplo de teste, como

it "when residence is the same" do 
  class Member
    def location
      return {:residence=>'Home', :work=>'his_work'} if self.male?
      return {:residence=>'Home', :work=>'her_work'}
    end
  end
  @family.location[:residence].should == 'Home'
end

mas duvido que seja uma boa prática. De qualquer forma, quando o RSpec está executando uma série de exemplos, ele não restaura a classe original; portanto, esse tipo de substituição substitui os exemplos subseqüente

ntão, existe uma maneira de um método stubbed retornar valores especificados diferentes em cada chamad

questionAnswers(5)

yourAnswerToTheQuestion