Usando Moq para verificar as chamadas são feitas na ordem correta

Eu preciso testar o seguinte método:

CreateOutput(IWriter writer)
{
    writer.Write(type);
    writer.Write(id);
    writer.Write(sender);

    // many more Write()s...
}

Eu criei um Moq'dIWriter e eu quero garantir que oWrite() métodos são chamados na ordem correta.

Eu tenho o seguinte código de teste:

var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));

No entanto, a segunda chamada paraWrite() emCreateOutput() (para escrever oid valor) lança umMockException com a mensagem "A invocação de IWriter.Write () falhou com comportamento simulado. Todas as invocações no mock devem ter uma configuração correspondente.".

Eu também estou achando difícil encontrar qualquer documentação / exemplos definitivos e atualizados de seqüências Moq.

Estou fazendo algo errado ou não posso configurar uma sequência usando o mesmo método? Se não, existe uma alternativa que eu possa usar (de preferência usando Moq / NUnit)?

questionAnswers(6)

yourAnswerToTheQuestion