2008-10-02 7 views
3

Alors que je googling/lecture pour cette réponse, j'ai pensé que je voudrais aussi demander ici.Moq'ing une interface

J'ai une classe qui est un wrapper pour un SDK. La classe accepte un objet ILoader et utilise l'objet ILoader pour créer un objet ISBAObject qui est converti en objet ISmallBusinessInstance. J'essaie simplement de se moquer de ce comportement en utilisant 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'erreur du compilateur lit comme suit: Erreur 1 Le match de la meilleure méthode surchargée pour 'Moq.Language.IReturns.Returns (Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)' a des arguments invalides

QU'EST-CE passe ici? Je m'attendais à ce que le Mock d'ISbaObjects puisse être retourné sans problème.

Répondre

8

Vous devez utiliser sbainst.Object, car sbinst n'est pas une instance de ISbaObjects - c'est juste la partie fantaisie.

+1

duh * tête * gifle. Assez facile, merci –

2

Mise à jour, le code correct

[TestMethod] 
public void Test_Customer_GetByID() 
{ 
    var mock = new Mock<ILoader>(); 

    var sbainst = new Mock<ISbaObjects>(); 

    mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object); 


} 
Questions connexes