Утвердить порядок выполнения частных методов - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу проверить, что метод 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>()));
}

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 16 ноября 2018

Почему бы не использовать System.IO для записи сообщений о состоянии в файл журнала?Вы также можете использовать System.Diagnostics, чтобы получить название метода, в котором вы находитесь:

string methodName = new StackTrace().GetFrame(0).GetMethod().Name
...