Проверка помощника, и я столкнулся с проблемой.
У меня есть область действия на модели:
Task.due_within(days)
И на это ссылается помощник:
module UsersHelper
...
def show_alert(tasks, properties, user)
pulse_alert(tasks, properties) ||
tasks.due_within(7).count.positive? ||
tasks.needs_more_info.count.positive? ||
tasks.due_within(14).count.positive? ||
tasks.created_since(user.last_sign_in_at).count.positive?
end
...
end
Итак, я тестирую с заглушками для tasks
, properties
и user
:
RSpec.describe UsersHelper, type: :helper do
describe '#show_alert' do
it 'returns true if there are tasks due within 7 days' do
tasks = double(:task, due_within: [1, 2, 3, 4], past_due: [])
properties = double(:property, over_budget: [], nearing_budget: [])
user = double(:user)
expect(helper.show_alert(tasks, properties, user)).to eq true
end
it 'returns true if there are tasks due within 14 days' do
# uh oh. This test would be exactly the same as above.
end
end
end
Это проходит, но когда я пошел писать тест для it 'returns true if there are tasks due within 14 days
, я понял, что мой double(:task, due_within: [])
не взаимодействует с переменной, предоставленной методу.
Как мне написать заглушку, которая заботится о переменной, предоставленной методу?
Очевидно, это не работает:
tasks = double(:task, due_within(7): [1, 2], due_within(14): [1, 2, 3, 4])