Vérifier
Vous pouvez vérifier que la méthode à l'essai a été appelé, ou même combien de fois cette méthode a été appelée
Juste pour reproduire le problème essayez ce code
class Program
{
static void Main(string[] args)
{
var _streamWriterMock = new Mock<StreamWriter>("output.txt");
string[] expectedLines= new []{"test","test"};
foreach (var expectedLine in expectedLines)
{
_streamWriterMock.Object.Write(expectedLine);
}
foreach (var line in expectedLines)
{
_streamWriterMock.Verify(a=>a.Write(line),Times.Exactly(1));
}
}
}
En fait, si vous essayez de railler votre code avec le tableau {"test","test"}
, vous obtiendrez une exception
Expected invocation on the mock exactly 1 times, but was 2 times: a => a.Write("test")
Mais si votre tableau est quelque chose comme
string[] expectedLines= new []{"test","test1"};
Votre maquette sera exécutée correctement
Ainsi, votre verify
vérifiera si votre méthode est appelée une seule fois pour la même entrée. Je pense que l'objectif principal du code est d'omettre que vous écrivez deux fois la même sortie.
Ce n'est pas un [mcve]. Le code omis fait qu'il est difficile de dire ce qu'il est testé ainsi que l'omission du sujet à tester. Au mieux, 'foreach' vérifie avec le simulacre que les lignes attendues ont été appelées sur la méthode Write de l'auteur du flux. – Nkosi
Quel cadre de moquerie utilisez-vous? –