Как отстаивать объект, переданный в фиктивный репозиторий - PullRequest
2 голосов
/ 26 марта 2020

У меня есть кодовая конструкция, как показано ниже в SUT

public class SUT
{

    //...

    public void Process()
    {
            // Does some work and creates new myDto(), and assigns field values.
            Update(myDto);
    }

    private void Update(MyDto myDto)
    {
        _repository.Update(myDto);
    }
}

Я передаю макет для _repository в моих модульных тестах. Я хотел бы проверить, правильно ли заданы поля, прежде чем вызывать метод Update(MyDto myDto)

. Есть ли способ получить ссылку на объект аргумента через mock?

Я хотел бы заявить против полей пропущенного объекта myDto.

Что-то вроде.

Assert.AreEqual(1, myDto.Field1);

Если нет, какие у меня варианты.

Я использую MSTest и Moq.

1 Ответ

2 голосов
/ 26 марта 2020

Mock<T> имеет метод обратного вызова, который вы можете использовать следующим образом;

myMock
   .Setup(x => x.Update(It.IsAny<MyDtoType>()))
   .Callback<MyDtoType>(VerifyDto);

и метод проверки;

public void VerifyDto(MyDtoType dto) 
{
   Assert.AreEqual(1, myDto.Field1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...