Rspec: заглушка найти (цепочка) - PullRequest
3 голосов
/ 09 марта 2011

Контроллер:

@organization.topics.find(params[:id])

Как я могу заглушить это в моем controller_spec с Rspec?(@organization установлено в моем помощнике по спецификациям)

Я пробовал:

controller.stub_chain(:topics, :find).with("37") { mock_topic }
Topic.stub(:find).with("37") { mock_topic }

Ничто из вышеперечисленного не работает.Есть идеи?Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

Если у вас есть доступ к переменной @organization (вы указываете, что у вас есть), то вы сможете:

@organization.stub_chain(:topics, :find).and_return(mock_topic)

Я не верю (если только они не изменили API на stub_chain, но я не вижу ничего подобного в документах), вы можете указать .with ('37 ') при использовании stub_chain. Если вам абсолютно необходимо указать, какая переменная передается методу find (а это редко бывает), вам придется пройти длинный путь:

# This line is attempting to fake-out the .topics association and
# just return a mock of *whatever*, since it's just an intermediary
# step to where we really want to get to.
topics = @organizations.stub!(:topics).and_return(mock_model(Topic))
topics.stub!(:find).with('37').and_return(mock_topic)
1 голос
/ 09 марта 2011

Разве вы не можете просто:

@organizations.topics.stub!(:find).and_return(mock_whatever)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...