Tôi có một ứng dụng gửi nhiều tệp PDF tới máy in. Có ai có bất kỳ kinh nghiệm tạo ra một đối tượng Mock đại diện cho một máy in địa phương?Làm thế nào để Mock máy in trong .NET?
Trả lời
Không hoàn toàn chắc chắn những gì bạn đang cố gắng làm, nhưng điều này có thể hữu ích.
Để thử máy in (hoặc bất kỳ thiết bị ngoại vi nào khác), bạn nên đóng gói tất cả các cuộc gọi đến máy in phía sau giao diện, ví dụ:
interface IPrinter
{
void Print(PrintData data);
}
Tất cả các mã khác của bạn sau đó phải trao đổi với máy in thông qua giao diện này.
Sau đó bạn có thể thực hiện một phiên bản của giao diện này mà nói chuyện với máy in thực, và một đối tượng giả mà bạn có thể sử dụng khi kiểm tra, vv
Đối tượng giả có thể dễ dàng được chế giễu sử dụng một khuôn khổ mocking như Rhino Mocks hoặc Moq, hoặc bạn chỉ có thể thực hiện một giả một mình.
public class FakePrinter : IPrinter
{
public void Print(PrintData data)
{
// Write to output window or something
}
}
Cập nhật:
Tất cả các lớp học sử dụng máy in sau đó sẽ giống như thế này:
public class ClassThatPrints
{
private IPrinter _Printer;
// Constructor used in production
public ClassThatPrints() : this(new RealPrinter())
{
}
// Constructor used when testing
public ClassThatPrints(IPrinter printer)
{
_Printer = printer;
}
public void MethodThatPrints()
{
...
_Printer.Print(printData)
}
}
BTW, nếu bạn sử dụng một container IoC sau đó bạn không cần constructor đầu tiên. Sau đó bạn tiêm các lớp máy in bằng cách sử dụng công cụ IoC.
Bạn luôn có thể tạm dừng máy in để in.
Bạn có thể sử dụng thiết bị máy in ghi vào tệp.
Và bạn có thể viết thiết bị in của riêng mình.
Một giải pháp khác là viết cho mình một ứng dụng LPD hoặc chỉ cần giám sát cổng 9100 và có hàng đợi in Windows định tuyến dữ liệu đến 'chính nó' trên 9100 hoặc 515 (LPD).
- 1. Làm thế nào để bạn Mock IUnityContainer?
- 2. Viết Máy in ảo trong .NET
- 3. Làm thế nào để Mock (với Moq) Phương pháp Unity
- 4. Làm thế nào để sử dụng Java để in trên máy in mạng?
- 5. Làm thế nào để Mock một thuộc tính thiếu
- 6. Tôi làm cách nào để cài đặt máy in bằng .NET?
- 7. Setting máy in "KeepPrintedDocuments" bất động sản trong .NET
- 8. Làm thế nào để mở một cửa sổ mới trong Windows Forms in .NET?
- 9. Làm thế nào để in một biểu mẫu trong Delphi?
- 10. Làm cách nào để biết liệu máy in có in được không?
- 11. Làm cách nào để đặt máy in mặc định của Windows trong C#?
- 12. Làm thế nào để kiểm tra một tham số thứ hai trong một PHPUnit mock object
- 13. Làm thế nào để ném ngoại lệ trong mock tê giác mới 3.5
- 14. Làm thế nào để in mảng?
- 15. Làm thế nào để ngăn chặn tấn công XXE (XmlDocument in .net)
- 16. Làm thế nào để bỏ qua hộp thoại in trong printDocument.print() và in trang trực tiếp?
- 17. Làm thế nào để sử dụng Rhino Mocks để Mock một HttpContext.Application
- 18. Làm cách nào để in tệp văn bản sang máy in bằng Qt?
- 19. Làm thế nào để in giá trị boolean trong Go?
- 20. Làm thế nào để in tên của biến trong C++?
- 21. Làm thế nào để in% s trong C?
- 22. Làm thế nào để in ra dòng trong Javascript
- 23. làm thế nào để in characterSet trong mục tiêu c?
- 24. làm thế nào để in Tuyên bố (CallableStatement) trong Java?
- 25. Làm thế nào để in màu/màu trong python?
- 26. Làm cách nào để in từ ứng dụng web sang máy in nhận?
- 27. Làm thế nào để sử dụng $ mock httpBackend để kiểm tra chi nhánh lỗi
- 28. Làm thế nào để viết một máy in đẹp tùy chỉnh
- 29. Làm thế nào để buộc máy ảo của python in dấu vết ngăn xếp?
- 30. Làm thế nào để `e.what()` in "phân bổ xấu"?
Đó là cách tôi sẽ thực hiện +1 –