Тестирование интеграции: правильно ли я делаю?

Вот тест интеграции, который я написал для класса, который взаимодействует с базой данных:

[Test]
public void SaveUser()
{
    // Arrange
    var user = new User();
    // Set a bunch of properties of the above User object

    // Act
    var usersCountPreSave = repository.SearchSubscribersByUsername(user.Username).Count();
    repository.Save(user);
    var usersCountPostSave = repository.SearchSubscribersByUsername(user.Username).Count();

    // Assert
    Assert.AreEqual(userCountPreSave + 1, userCountPostSave);
}

Мне кажется, что я не могу протестировать Save без использования функции SearchSubscriberByUsername , чтобы узнать, был ли успешно сохранен пользователь. Я понимаю, что интеграционные тесты не являются модульными тестами, которые должны тестировать по одной единице кода за раз. Но в идеале было бы неплохо, если бы я мог тестировать одну функцию в своем классе репозитория для каждого теста, но я не знаю, как я могу это сделать.

Хорошо, как я написал код до сих пор, или есть лучший способ?

7
задан xTRUMANx 21 June 2011 в 08:28
поделиться