У меняRSpec instance_double reply_to? странное поведение
let(:ssl_socket) { instance_double(OpenSSL::SSL::SSLSocket) }
Теперь я хочу, чтобы проверить, если объект у меня есть экземпляр OpenSSL :: SSL :: SSLSocket. Я не хочу использовать be_an_instance_of matcher, потому что я хочу, чтобы мой тест больше походил на «утиный набор». Так что я хочу знать, если объект отвечает «ssl_version» метод
it 'should change socket to ssl' do
#do some stuff and set socket = ssl_socket
expect(socket).to respond_to(:ssl_version)
end
Это не работает
expected #<InstanceDouble(OpenSSL::SSL::SSLSocket) (anonymous)> to respond to :ssl_version
Но если я сделать это с помощью других Искателя
it 'should change socket to ssl' do
#do some stuff and set socket = ssl_socket
expect(socket).to receive(:ssl_version)
socket.ssl_version
end
затем InstanceDouble будет на самом деле проверьте, существует ли метод ssl_version в экземплярах OpenSSL :: SSL :: SSLSocket. Является ли это признаком или ошибкой ответчика? Должен ли я использовать приемник?
не должен 'socket' быть' ssl_socket' на основе вашего 'let' утверждения? – engineersmnky
Да, и я хочу проверить это, то есть после 'do_some_stuff'' socket' (или 'object.socket', если быть точным) следует установить' ssl_socket', но это также может быть 'nil'. –