Pergunta
Enquanto eu estou pesquisando / leitura para esta resposta eu pensei que eu também perguntar aqui.
Eu tenho uma classe que é um wrapper para um SDK. A classe aceita um objeto ILoader e usa o objeto ILoader para criar um ISBAObject que é moldada em um objeto ISmallBusinessInstance. Estou simplesmente tentando zombar este 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);
}
O erro compilador lê: Erro 1 O melhor correspondência método sobrecarregado para 'Moq.Language.IReturns.Returns (Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)' tem alguns argumentos inválidos
O que está acontecendo aqui? Eu esperava que o Mock de ISbaObjects para ser capaz de ser devolvidos sem um problema.
Solução
Você precisa usar sbainst.Object, como sbinst não é uma instância de ISbaObjects - é apenas a parte simulada
.Outras dicas
Atualizado, código correto
[TestMethod]
public void Test_Customer_GetByID()
{
var mock = new Mock<ILoader>();
var sbainst = new Mock<ISbaObjects>();
mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object);
}