У меня есть бизнес-класс, который управляет объектом USER.

В этом классе у меня есть метод для возврата одного пользователя по ID:

public Utente GetUser(int id)
{
    var utente = _userDataManager.GetUserById(id);

    return _mapper.Map<Utente>(utente);
}

_userDataManager - это интерфейс, IUSERDATAMANAGER, и он реализован с классом DAL; GetUserById Возврат пользователя или null} (поиск с EF6).

_mapper - интерфейс IMAPPER (authoapper). Обратный метод - это сопоставленный объект.

У меня два вопроса:

  1. Есть ли смысл проверить этот метод?

  2. Должен ли я насместить оба объекта?

Чернокожий пример будет оценен.

1
Max Bertoli 15 Мар 2018 в 00:43

1 ответ

Лучший ответ

Есть ли смысл проверить этот метод?

Если стоит написать код, оно стоит тестировать код.

Должен ли я насместить оба объекта?

При тестировании теста на тестируйте тему, вы издеваете зависимости, которые позволили бы выполнить тест для завершения.

Например

public void GetUser_Should_Return_Utente() {
    //Arrange
    var userId = 2;
    var user = new User {
        UserId = userId,
        //... other properties
    };
    var userDataManagerMock = new Mock<IUserDataManager>();
    userDataManagerMock.Setup(_ => _.GetUserById(userId)).Returns(user);

    var expected = new Utente {
        Id = user.Id,
        //...other properties
    }

    var mapperMock = new Mock<IMapper>();
    mapperMock.Setup(_ => _.Map<Utente>(It.IsAny<object>())).Returns(expected);

    var subject = new MyBusinessClass(userDataManagerMock.Object, mapperMock.Object);

    //Act
    var actual = subject.GetUser(userId);

    //Assert
    Assert.Equal(expected, actual);
}

В приведенном выше подведенном выше коде пользовательский диспетчер данных и Mapper издеваются и вводится в тему при тестировании метода GetUser.

Это изолированная установка единиц вышеуказанного способа и показывает текущую реализацию этого метода, поток до завершения при условии, что зависимости выполняются, как и ожидалось при вызове.

1
Nkosi 15 Мар 2018 в 01:17