Я пытаюсь справиться с обрезанием в Rspec. Я хотел бы понять, как заглушка возвращает значения из массива.Rcpec stubbing возвращает значения из заданного блока
Вот что я пытаюсь незавершенным в данный момент,
if client.jobs.any?
client.jobs.map do |job|
if job.job_locations.any?
job.job_locations.map do |jl|
if jl.location_id == self.location_id
errors.add(:location_id, "This location is in use with another of the client's jobs")
return false
end
end
end
end
end
Я STUB первой строки (то есть клиент имеет работу), но я не уверен, как незавершенные возвращаемые значения из массив, чтобы они выполнялись в спецификационных тестах.
Вот соответствующий фрагмент кода
context "location_id matches job_location location_id" do
before do
allow(client_location).to receive(:client).and_return(client)
allow(client).to receive(:jobs).and_return(some_jobs)
allow(some_jobs).to receive(:map).and_return([job])
#eventually I want to get to this
allow_any_instance_of(JobLocation).to receive(:location_id).and_return(1)
allow_any_instance_of(ClientLocation).to receive(:location_id).and_return(1)
end
it "returns false" do
expect(@instance.destroy).to be_falsey
end
end
Я должен добавить переменных «some_jobs» в тесте спецификации на заводе девушка генерироваться экземпляры. Некоторые задания будут равны [some_jobs].
OMG! Ваш код ждет рефакторинга. Действительно :-) –
да точно - я сначала пишу тесты, а затем рефакторинг! – user3868832
@ Энтони ... Я знаю, что вы имели в виду .. lol;) –