Я хочу проверить, что метод Foo
, который вызывает три частных метода boo1
, boo2
, boo3
, действительно вызывает их в этом точном порядке (это упрощение реального сценария).
Для проверки последовательности я планирую использовать метод InSequence
объекта Mock
.
Для тестирования частного метода я планирую использовать класс PrivateObject
.
Я понятия не имею, как объединить эти два; вот что я пробовал до сих пор, но это не похоже на работу!
public class TestedClass
{
private void _boo1(object someParam)
{
//some logic
}
private void _boo2(object someParam)
{
//some logic
}
private void _boo3(object someParam)
{
//some logic
}
public void Foo(object someParam)
{
_boo1(someParam);
_boo2(someParam);
_boo3(someParam);
}
}
А вот метод теста, который я создал до сих пор:
[TestMethod]
public void TestSequence()
{
var sequence = new MockSequence();
var mockedObject = new Mock<TestedClass>();
PrivateObject obj = new PrivateObject(mockedObject);
mockedObject.Object.Foo(It.IsAny<Object>());
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo1", BindingFlags.Default, It.IsAny<Object>()));
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo2", BindingFlags.Default, It.IsAny<Object>()));
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo3", BindingFlags.Default, It.IsAny<Object>()));
}
Любая помощь будет оценена.