Quais são as vantagens de Mocha mais de RSpec é construído em zombando quadro?
-
05-07-2019 - |
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?
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.