Тестирование конструктора Mocked объекта - PullRequest
1 голос
/ 08 января 2011

Я пытаюсь протестировать объект "SqlGymSessionRepository", который принимает int при инициализации.Если параметр не указан, я хочу, чтобы он выдал ошибку.Я не могу понять, как это должно работать.У меня есть что-то вроде этого:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Throw_Exception_If_Not_Session_Id()
{
    var mockRepos = new Mock<SqlGymSessionRepository>();
}

Я не уверен, где конструктор должен быть проверен?

Ответы [ 3 ]

4 голосов
/ 08 января 2011

Вы не хотите издеваться над классом (реализацией), который вы тестируете.Вы хотите смоделировать зависимости от класса.Если вы тестируете SqlGymSessionRepository, то вы не хотите его высмеивать, вам нужна его реализация.Насмешка предназначена для любых других классов, от которых зависит SqlGymSessionRepository, которые вы затем предоставили бы для своих тестов.

Вызовите конструктор напрямую.

1 голос
/ 08 января 2011

Если вы хотите проверить конструктор, назовите его:

new SqlGymSessionRepository(null);

Обновление за комментарии:

Вы утверждаете, что для этого требуется значение int. Затем компилятор будет гарантировать, что он всегда будет вызываться либо с null, либо с целочисленным значением. Если null является недействительной допустимой инициализацией, ваш код должен выдать исключение, и вы можете это проверить. Вам не нужно проверять, что метод вызывается без параметра. C # статически типизирован, поэтому код не будет компилироваться, если не указано значение для всех обязательных параметров.

0 голосов
/ 08 января 2011
new SqlGymSessionRepository(null);
...