Pergunta

Preciso não apenas trocar a implementação, mas também adicionar a verificação necessária para ter certeza de que determinados métodos foram chamados na ordem correta.Posso imaginar que algo como Mole + Mock me daria essa opção.Alguém sabe se Moles tem esse recurso?

Este código deve ser útil:

// Verify if Dispose was called
MDisposableObject.Constructor = delegate(DisposableObject instance)
{
    MDisposableObject mole = new MDisposableObject(instance);
    ...
    // This doesn't work 
    //objectContext.Expects(i => i.Dispose()).ToBeCalledOneTime();
};
Foi útil?

Solução

Moles pretendem dar tocos (e não zomba) para tudo, mesmo para métodos estáticos ou selados.Está escrito no manual do Moles que eles não visam o aspecto de zombaria como outros frameworks de zombaria:eles oferecem isolamento, não zombarias.Se quiser verificar as ligações dos seus Moles, você terá que fazer do seu próprio jeito.Por exemplo:

    bool called = false;
    MDisposableObject.Constructor = (@this) =>
    {
        var mole = new MDisposableObject(@this)
        {
            Dispose = () =>
                {
                    Assert.IsFalse(called);
                    called=true;
                    //if you want to call the original implementation:
                    MolesContext.ExecuteWithoutMoles(() => (@this).Dispose());
                    //or do something else, even nothing
                }

        };
    };

Apenas Isolador Typemock (poderoso, mas caro) e Apenas Mock do Telerik (novo concorrente, também não gratuito) permite recursos de simulação para tudo.
Se você tiver algumas interfaces, delegados e métodos virtuais, use uma estrutura de simulação gratuita como Moq ou RhinoMocks.

Um aviso sobre meu exemplo:até agora não descobri como chamar o construtor original, quero dizer algo como

var mole = new SDisposable();
(@this) = mole;
new MDisposable(mole) {...};

Na verdade, pelo que li no msdn, não é possível...Espero que os próximos lançamentos permitam isso.

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