2016-11-06 3 views
0

У меня есть класс обслуживания, как показано ниже:Сравнить Действие <T>

public class MyService 
{ 
    private readonly IMyDependency _myDependency; 

    public MyService(IMyDependency myDependency) 
    { 
     _myDependency = myDependency; 
    } 

    public void MyHandler(string param) 
    { 
     // work 
    } 

    public void AnotherMethod() 
    { 
     _myDependency.DoWork(MyHandler); 
    } 
} 

Как я могу проверить, что блок MyHandler был дан в качестве параметра DoWork()?

+0

Вы используете какой-либо насмешливый библиотеку? – dotnetom

+0

да, я использую Moq. –

ответ

1

Поскольку вы используете Moq, вы можете написать тест, как это:

[TestMethod] 
public void DoWorkWasCalledWithCorrectParameters() 
{ 
    var mock = new Moq.Mock<IMyDependency>(); 
    var myService = new MyService(mock.Object); 
    myService.AnotherMethod(); 
    // verify that method was called once and with correct parameter: 
    mock.Verify(x => x.DoWork(myService.MyHandler), Moq.Times.Once); 
} 
+0

Спасибо за помощь. –

Смежные вопросы