рельсы, как заглушки: user_id в сеансе с мокко? - PullRequest
1 голос
/ 12 января 2012

Как бы я заглушил :user_id в session, используя mocha framework с Spec-тестом?

Я попробовал следующее:

session.stubs (: user_id).возвращает (1)

session.stub! (: user_id) .and_return (1)

session.expected (: []). with (has_entries ('user_id' => 1))

но я получил ноль за сессию [: user_id] в приведенных выше попытках!

Во всех примерах показано, как заглушить объект, но сессия - это хеш-массив, как мне заглушить или смоделировать определенный ключ, такой как: user_id или: page_id .. и т. Д. В сеансе ??

1 Ответ

0 голосов
/ 27 сентября 2012

Я думаю, что у вас может быть новый экземпляр сеанса при каждом запросе, поэтому вы должны заглушить каждый из них.

?> session.class
=> ActionController::Session::AbstractStore::SessionHash

Итак, заглушка должна быть

ActionController::Session::AbstractStore::SessionHash.any_instance.stubs(:user_id).returns(1)
...