Я хочу проверить, что конкретный значок отображается в представлении для пользователя с полосой больше, чем X дней. Поэтому мне нужно заглушить streak
метод User
. Но я хочу, чтобы он заглушил метод только для определенного пользователя на основе его uid
. Тестовый код приведен ниже. неОтдельные экземпляры экземпляра класса в функциональном тесте
test "should display an icon for users with streak longer than 7 days" do
node = node(:one)
User.any_instance.stubs(:streak).returns([8,10])
get :show,
author: node.author.username,
date: node.created_at.strftime("%m-%d-%Y"),
id: node.title.parameterize
assert_select ".fa-fire", 1
end
Возвращаемое значение является массивом, то первое значение в массиве не является не дни в подряде и второе значение является не посты в этой полосе.
Линия User.any_instance.stubs(:streak).returns([8,10])
заглушки любого экземпляра User
класс. Как я могу заглушить его так, чтобы он заглушил только те экземпляры, где :uid => 1
?
Я не знаю, Руби, но то, что вы описываете его создания «подделка», а не заглушка. Я стараюсь избегать их, как чумы, потому что вам технически приходится писать для них единичные тесты, чтобы обеспечить их предсказуемость. Возможно, я не понимаю вашу проблему правильно, но я бы написал два теста и использовал два разных заглушки. Один заглушка будет где ': uid' = 0, в другом тесте будет использоваться заглушка, где значение': uid' будет больше или равно 1. –