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)?