Как распечатать на нулевом принтере в .NET? - PullRequest
3 голосов
/ 17 декабря 2008

Мне нужно написать модульный тест для метода, который будет печатать документ. Есть ли простой способ отправить вывод в Windows эквивалент / dev / null? Я предполагаю, что распечатка документа при каждой регистрации на нашем сервере сборки быстро станет дорогой. ;)

В идеале это будет работать как на нашем сервере сборки (на котором нет принтера по умолчанию), так и на наших машинах для разработки (которые работают), поэтому я бы предпочел не менять принтер по умолчанию.

Спасибо за все замечательные ответы, которые, несомненно, последуют за этим увлекательным вопросом.

Ответы [ 2 ]

13 голосов
/ 17 декабря 2008

Я делаю это, создавая принтер Windows, который печатает на устройстве NUL. Это довольно просто, хотя специфика немного отличается в разных версиях Windows: просто создайте локальный принтер и укажите NUL в качестве локального порта, «Generic» в качестве производителя и «Generic / Text Only» в качестве модели принтера.

1 голос
/ 17 декабря 2008

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

Проверьте TypeMock или RhinoMocks на то, что поможет вам сделать это.

Вот как это будет выглядеть при использовании TypeMock:

Mock mock = MockManager.Mock<PrintManager>();
mock.ExpectCall("Print");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...