Установите ожидание, не издеваясь ничего

Используя 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: обнаружение вызова метода, но при этом он выполняет свою функцию

Другие вопросы по тегам