Aufgrund dieser FunktionsreferenzMoq: Werte zurück von ref Parameter in Test
bekommenvoid ParseFirstTwoRows(FileQueue file, ref string[] firstRow, ref string[] secondRow);
Wie kann ich Moq verwenden, um einen Test zu gestalten, die einen Wert auf firstrow und secondRow mit verlässt sich?
Ich habe dies versucht:
Mock<IFileParser> mockFileParse = new Mock<IFileParser>();
string[] firstline = new string[2] { "1", "2" };
string[] secondline = null;
mockFileParse.Setup(m => m.ParseFirstTwoRows(It.IsAny<FileQueue>(), ref firstline, ref secondline))
.Callback<FileQueue, string[], string[]>((fq, fl, sl) =>
{
fq = new FileQueue();
fl = firstline;
sl = secondline;
});
return mockFileParse;
Aber dies führt zu dem Fehler:
Invalid callback. Setup on method with parameters (FileQueue,String[]&,String[]&) cannot invoke callback with parameters (FileQueue,String[],String[]).
ich einige Fragen zu diesem Thema gesehen habe, aber ich bin verwirrt, ob das, was ich bin zu versuchen ist unmöglich, oder ob ich den Test nicht richtig einrichte. Alles, was ich für meine Tests brauche, ist sicherzustellen, dass die ref-Parameter einen Wert im ausführenden Code haben.
Dank für diese, aber der Anruf mit ref ist eine private Funktion namens von eine öffentliche, also kann ich die params nicht so passieren. Daher mein Problem. –
In diesem Fall würde ich vorschlagen, für diesen Test manuell einen eigenen Mock zu erstellen und auf Moq für diese Schnittstelle zu verzichten. – Nkosi