Установите ожидание, не издеваясь ничего
Используя MiniTest::Spec и Mocha:
describe "#devices" do
it "scopes the devices by the provided :ip_list" do
ips = 'fast tests ftw!'
ds = DeviceSearch.new ip_list: ips
Device.expects(:scope_by_ip_list).once.with(ips)
ds.devices
end
end
Когда я заставлю код работать правильно, этот тест не пройден, потому что вызов Device.expects(:scope_by_ip_list)
также заглушки Device.scope_by_ip_list
и так как я не указываю .returns(Devices.scoped)
или некоторые такие, он заглушает метод с nil
, Таким образом, в моем коде, который правильно определяет список устройств, а затем выполняет дальнейшие операции, дальнейшие операции разрушаются.
Я не хочу указывать .returns
параметр, хотя, потому что мне абсолютно все равно, что он возвращает. Я не хочу, чтобы заглушить метод вообще! Я просто хочу установить ожидание и оставить все так, как есть.
Есть способ сделать это?
(Мне кажется очень неловко говорить что-то вроде Device.expects(:foo).returns('bar')
- когда я это говорю Model
надеется method
Я не говорю, чтобы заглушить этот метод! Мы можем сказать Device.stubs(:foo)
, если мы хотим заглушить это.)
1 ответ
The behavior is intended and can't be changed. Look at the following post to see how it can be circumwented:
rspec 2: обнаружение вызова метода, но при этом он выполняет свою функцию