RSpec: permitir vs esperar

¿Sabes que allow y esperan se usan en rspec-mocks, pero estás confundido con ellos ?. No se preocupe, se los explicaré brevemente.

allow:

book = double("book")
allow
(book).to receive(:title) { "The RSpec Book" }

ASUMES que el objeto libro tiene un título de método y devolverá “El libro RSpec” cuando se llame a este método.

expect:

book = double("book")
allow
(book).to receive(:title) { "The RSpec Book" }
expect
(book).to receive(:title) { "The RSpec Book" }

Este ejemplo es un poco diferente. ESPERA que cuando el objeto libro llame al método title , devolverá esa cadena “El libro RSpec”.

Resumir:

Una gran diferencia entre ellos es que ASUMIR y ESPERAR

Magia profunda:

¿Por qué usamos ‘permitir’?
Para responder a esta pregunta, debemos referirnos al concepto de Test Dobles:

Un doble de prueba es un objeto que sustituye a otro objeto en su sistema durante un ejemplo de código

Este objeto no existe en su sistema real, no posee métodos ni atributos. Por lo tanto, debemos usar allow para asumir que este objeto tiene algunos métodos y devuelve valores predefinidos.

Eso es todo y gracias por tu preocupación. Si tiene alguna pregunta, no dude en preguntarme :).