2010-05-18 3 views

Répondre

5

Essayez comme ceci:

var mock = MockRepository.GenerateMock<Service>(
    new object[] { new Command[0] } 
); 
0

De plus, vous pouvez envelopper service avec une interface et vous inquiétez pas sur les arguments du constructeur. Si le constructeur change, vos tests seront liés à ces détails d'implémentation et devront être mis à jour.

var mock = MockRepository.GenerateMock<IService>(); 

Edit: Au moins isoler la création de cette Mock donc si votre constructeur sur les changements de service, vous ne devez mettre à jour à chaque endroit. Une pratique courante est la suivante:

(dans votre classe de test)

private ObjectWithServiceDependency CreateObjectUnderTest(){ 
    //Here you would inject your Service dependency with the above answer from Darin 
    //i.e. 
    var mockService= MockRepository.GenerateMock<Service>(new object[] {new Command[0] }); 
    var objectUnderTest = new ObjectWithServiceDependency(mockService); 
    return objectUnderTest; 
} 

Puis dans un test,

[Test] 
public TestSomething(){ 
    var out = CreateObjectUnderTest(); 
    //do testing 
    mockService.Expect(...); 
} 
+0

Vous ne voulez pas faire. :( –

+0

Je ne suis pas le plus grand fan d'interfaces pour le moqueur, mais vous aurez une dette technique liée aux tests en sachant les paramètres et le type du constructeur. moins isoler les endroits qui devront changer si le constructeur a besoin de changer. –

Questions connexes