Pergunta

Eu noto que muitas pessoas preferem Mocha sobre RSpec é construído em zombando quadro. Alguém pode explicar as vantagens de Mocha, ou qualquer alternativa, sobre RSpec é construído em um quadro zombando?

Foi útil?

Solução

Uma característica específica que eu realmente gosto é ser capaz de stub todas as instâncias de uma classe. Muitas vezes eu faço algo como o seguinte com simulações RSpec:

stub_car = mock(Car)
stub_car.stub!(:speed).and_return(100)
Car.stub!(:new).and_return(stub_car)

com Mocha que se torna:

Car.any_instance.stubs(:speed).returns(100)

I encontrar a versão Mocha mais clara e explícita.

Outras dicas

estruturas zombando de Ruby têm evoluído muito desde essa pergunta foi feita em 2009. Então, aqui está uma comparação pouco de 2013:

Expectativas

  • com Rspec-simulações: expect(user).to receive(:say_hello)
  • com Mocha: user.expects(:say_hello).once

Tocando um objeto

  • com Rspec-simulações: user = double(name: 'John Doe')
  • com Mocha: user = stub(name: 'John Doe')

Stubbing nada

  • com Rspec-simulações: User.any_instance.stub(:name).and_return('John Doe')
  • com Mocha: User.any_instance.stubs(:name).returns('John Doe')

Eles oferecem as mesmas facilidades, e ambos podem ser usados ??com ou sem Rspec.
Então, eu diria escolher um sobre o outro é uma questão de gosto pessoal (e que gosto bastante parecidas).

Tanto quanto eu sei Mocha suporta Duplo Injeções (aka parcial Mocking, que também é suportado no rr), não tenho certeza de que RSpec suporte a esse recurso também.

Além disso, para aqueles que preferem alternar entre estruturas de teste, Mocha é uma solução universal aplicável para Teste / Unit, Shoulda, etc. Usando RSpec zombando com todas estas libs será um exagero.

Eu, pelo menos mocha uso, porque eu não uso rspec. Eu uso test / unit, e teste / unidade não tem apagando e zombando de built-in.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top