различные фиктивные объекты для сравнения объектов в модульных тестах - PullRequest
2 голосов
/ 02 июня 2011

У меня есть метод Equals, который я пытаюсь проверить.этот метод возвращает true, если переданный объект является тем же, что и этот объект.

Я проверяю истинное условие следующим образом.

        var mocks = new MockRepository();
        var mockActionAlert = mocks.StrictMock<ActionAlert>();
        var mockActionAlert2 = mocks.StrictMock<ActionAlert>();
        bool comparer = mockActionAlert.Equals(mockActionAlert2);
        Assert.Equal(true, comparer);

Однако, как я могу получить другой фиктивный объект для проверкиМетод равный возвращает false.

Спасибо,

1 Ответ

1 голос
/ 02 июня 2011

То, что вы показали, кажется, не имеет никакого смысла вообще.

В вашем тестовом коде есть только пародии - никаких реальных реализаций вообще.

Мало того, что вы нетестирование чего-либо реального, но поскольку вы используете макеты, вы можете даже решить, провалиться ли ваш тест на притворство или нет.

Чтобы сделать то, что вы (я думаю), хотите, просто создайте ActionAlert (один из вашего реального кода), а не имитация единицы), а затем создайте второй ActionAlert со свойствами, которые должны сделать его равным, используя ваш метод Equals.Передайте второй ActionAlert и подтвердите, что результат равен true (вероятно, лучше использовать Assert.True (), поскольку он более выразителен для намерения).

Затем, когда проверяется, что метод Equals возвращает false, пишите тесты сActionAlerts со свойствами, которые делают их не равными.Совсем нет необходимости в mocks.

Место, где вам нужны mocks, - это то место, где у вас есть зависимости в тестируемых классах, для которых вы хотите либо утвердить какое-либо поведение (был ли вызван метод зависимости определенным образом)или вам нужно какое-то предопределенное поведение (заставить метод возвращать определенное значение при вызове).

...