Domanda
Mentre sto cercando su Google / leggendo questa risposta, ho pensato di chiedere anche qui.
Ho una classe che è un wrapper per un SDK. La classe accetta un oggetto ILoader e utilizza l'oggetto ILoader per creare un oggetto ISBAO che viene trasmesso in un oggetto ISmallBusinessInstance. Sto semplicemente cercando di deridere questo comportamento usando Moq.
[TestMethod]
public void Test_Customer_GetByID()
{
var mock = new Mock<ILoader>();
var sbainst = new Mock<ISbaObjects>();
mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst);
}
L'errore del compilatore recita: Errore 1 La migliore corrispondenza del metodo sovraccaricato per "Moq.Language.IReturns.Returns (Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)" presenta alcuni argomenti non validi
Cosa sta succedendo qui? Mi aspettavo che il Mock di ISbaObjects potesse essere restituito senza problemi.
Soluzione
Devi usare sbainst.Object, poiché sbinst non è un'istanza di ISbaObjects - è solo la parte finta.
Altri suggerimenti
Codice corretto e aggiornato
[TestMethod]
public void Test_Customer_GetByID()
{
var mock = new Mock<ILoader>();
var sbainst = new Mock<ISbaObjects>();
mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object);
}