2010-06-04 3 views
3

créer un objet MOQMoq et les paramètres que vous passez

passe à ma classe

appel et passer dans un objet.

Comment puis-je avoir accès à cet objet pour voir si les bonnes propriétés sont définies?

+0

Vous êtes de passage de la maquette réelle à votre classe ou la maquette .objet? –

+0

Voici ce que je veux faire: MyMock.MyMethod (MyObjectINeed); Comment puis-je obtenir MyObjectINeed? – zachary

+0

Pourquoi ne pas simplement garder une référence? var myObj = myObjectINeed; MyMock.MyMethod (myObj); Assert.That (myObj)! = Null. – womp

Répondre

2

Si je lis correctement votre question, vous semblez avoir une situation comme celle-ci?

public void DoTheCalculation(ICalculator calculator) { 
    calculator.Calculate(this /* Or any other object */); 
} 

Dans ce cas, vous pouvez faire valoir sur les arguments transmis à une interface Raillé en utilisant la méthode It.Is qui accepte un prédicat:

[TestMethod] 
public void DoTheCalculation_DoesWhateverItShouldDo() { 
    Mock<ICalculator> calcMock = new Mock<ICalculator>(); 
    CalculationParameters params = new CalculationParmeters(1, 2); 
    params.DoTheCalculation(calcMock.Object); 

    calcMock.Verify(c => c.Calculate(It.Is<CalculationParameters>(
         c => c.LeftHandSide == 1 
           && c.RightHandSide == 2)); 

} 
1

Vous utilisez la méthode .VerifySet() sur l'objet maquette pour cela. Par exemple

mockObject.VerifySet(o => o.Name = "NameSetInMyClass"); 

S'il n'était pas défini correctement, il déclenchera une exception.

En savoir plus dans le quick start here.

1

Votre question est un peu confuse, on ne sait pas de quel objet vous parlez dans la dernière phrase. Toutefois, chaque wrapper Moq a une propriété "Object" du type que vous vous moquez. Vous pouvez y accéder en regardant simplement cette propriété.

var myMock = new Mock<MyObj>(); 

var myProp = myMock.Object.MyProperty; 
Questions connexes