Насмешка без МОК или внедрение зависимости

Поскольку политики покупают их. Что-либо политики достают в движениях, чтобы гадить, потому что 99% времени они - только опыт, находится в баллотировании на должность, не делая вещей как соответствующая проверка аппаратного и программного обеспечения.

кроме того, вознаграждения.

<час>

вред истины, не так ли?

12
задан peter 14 October 2009 в 04:03
поделиться

5 ответов

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

public Brain() : this(new Hand(), new Mouth()) { }

Тем не менее, в дополнение к Isolator вы можете проверить последние сборки Pex ( 0.17 ), которые включают молей , которые обеспечивают механизм, аналогичный Swap изолятора.

11
ответ дан 2 December 2019 в 07:22
поделиться

Лично я не думаю, что это хорошо.

Для меня DI обеспечивает больше пользы, чем просто тестируемость, поэтому неразумно отказываться от этого, даже если инструмент позволяет это делать. См. Также этот вопрос и первый ответ на него.

4
ответ дан 2 December 2019 в 07:22
поделиться

Moles , структура обхода, которая поставляется с Pex , также позволяет сделать это ... но с другим синтаксисом.

MHand.New = (me) => {
    new MHand(me) {
        TouchIronIron = iron => {}
    };       
};

Обратите внимание, что ваш пример противоречив.

2
ответ дан 2 December 2019 в 07:22
поделиться

AFAIK, TypeMock - единственная структура, которая допускает этот сценарий, и, вероятно, еще долго будет. Причина в том, что он использует радикально другой подход к имитации.

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

TypeMock использует радикально другую технику, потому что использует (unmanaged). NET Profiling API для перехвата вызовов любого типа . Это намного сложнее реализовать, поэтому неудивительно, что это коммерческое предприятие.

В любом случае, TypeMock vs. остальной мир - старый и очень оживленный спор. Вот один из вариантов (обязательно прочтите также комментарии).

4
ответ дан 2 December 2019 в 07:22
поделиться

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

Я начал понимать, что решение «все включено», вероятно, является лучшим, то есть Rhino заставит реструктуризацию использовать полную инверсию управления, что приведет к хорошему дизайну.

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

0
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: