Я пытаюсь провести 2 теста для проверки функциональности метода в классе Weather
. Метод random_weather
должен изменить @status
в зависимости от результата random_number
. Однако я не могу найти способ заставить random_number
быть определенным числом.
Тест RSpec:
require 'weather'
describe Weather do
subject { Weather.new }
it 'Can create an instance of Weather' do
expect(subject).to be_instance_of Weather
end
it 'Can return sunny when randomly choosing weather' do
subject.stub(:generate_random_number) {5}
expect(subject.status).to eq "Sunny"
end
it 'Can return stormy when randomly choosing weather' do
subject.stub(:generate_random_number) {9}
expect(subject.status).to eq "Stormy"
end
end
Класс погоды:
class Weather
attr_reader :status, :random_number
def initialize
@random_number = generate_random_number
puts @random_number
if (1..8).include?(@random_number)
@status = "Sunny"
else
@status = "Stormy"
end
end
def generate_random_number
rand(1..10)
end
end
пример сбоя:
1) Weather Can return stormy when randomly choosing weather
Failure/Error: expect(subject.status).to eq "Stormy"
expected: "Stormy"
got: "Sunny"
(compared using ==)
# ./spec/weather_spec.rb:17:in `block (2 levels) in <top (required)>'