RSpec – Mocks and Stubs

Posted by Herminio on agosto 25, 2009

Mocks and Stubs

Objetos Mock são objetos de dublê que dão maior controle declarativa sobre o seu comportamento no cursor da execução de um exemplo. Definindo mensagens de expectativas e métodos stubs de objetos permite que você especifique uma simulação como um objeto colaborar/corresponder com os outros antes desses objetos existirem.

Você também pode usar objetos dublê para isolar os seus exemplos de serviços que são complexos para configurar ou caros demais para serem executados e assim pode manter seu conjunto de exemplos funcionando rapidamente.

RSpec possibilita ter objetos falsos, assim lhe permite criar objetos fictícios em seus exemplos de objetos mocks, tendo o mesmo comportamento de seus objetos existentes.

Criando um objeto fictício

Você cria um objeto mock com o método de simulação:

    my_mock = mock(name)

Isso cria uma nova simulação com esse name (uma string) e registra-lo. Quando terminar o exemplo, todas as simulações registradas são verificadas.

    my_mock = mock(name, stubs_and_options)

Como acima, mas permite que você defina valores de retorno mínimo para determinadas mensagens e opções à ajustar a simulação do comportamento. Atualmente a única opção suportada é a seguinte :null_object. Definir isso como verdade instrui a ironizar a ignorar (baixo consumo) qualquer mensagem que não foi dita para esperar e retornar-se.

    my_mock = mock("blah", :null_object => true)

Notas
Há muitos pontos de vista diferentes sobre o significado de mocks e stubs. Se você estiver interessado em aprender mais, aqui estão algumas leituras recomendadas:

• Mock Objects: http://www.mockobjects.com/
• Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf
• Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf
• Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html
• Mocks aren’t stubs: http://www.martinfowler.com/articles/mocksArentStubs.html


Se você gostou desse post, me recomende:

Recommend Me

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

Comments