Tôi đang làm việc trên một dự án có nhiều dịch vụ nhắn tin bên ngoài. Một cách hay để mô tả nó chỉ bằng một "hyperbolas" hơi là một ứng dụng mà hệ thống phải gửi các thông điệp tới Flicker API, API Facebook và API Netflix.Sử dụng các đối tượng giả ngoài thử nghiệm, thực hành không tốt?
Để hỗ trợ các tình huống bị ngắt kết nối, ghi nhật ký, khả năng sử dụng của nhà phát triển, cấu hình, v.v ... Tôi đã thử nghiệm bằng cách sử dụng phương pháp sử dụng rất nhiều cây thông thường và cây biểu thức. Kết quả cuối cùng trông như thế này:
Messenger<NetflixApi>.SendCustom(netflix => netflix.RecommendMovie("my message"));
Nói chung tôi hài lòng với kết quả cuối cùng nhưng cảm thấy như tôi đã thực hiện một sai lầm, hoặc bị bỏ qua một nơi nào đó thiết kế chủ yếu liên quan đến kiểm tra và các tình huống bị ngắt kết nối.
Trong khi thử nghiệm, cho dù tự động, đơn vị hay dựa trên con người, tôi đã triển khai một nhà máy đối tượng sử dụng DI để thực hiện hành động chính xác trong "Chế độ trực tiếp" và sử dụng Mocks để cung cấp một loại sứ giả vô trùng t làm gì cả khi ở chế độ thử nghiệm.
Tôi chỉ nhìn thấy hoặc đọc về Mocks đang được sử dụng ở chế độ thuần túy TDD và không được sử dụng để sắp xếp một đối tượng câm. Các phương pháp tôi đã thấy sẽ xoay quanh việc sắp xếp hoặc nhô ra chức năng giao tiếp HTTP mà tất cả các API tôi đang sử dụng phụ thuộc vào.
Mối quan tâm chính của tôi là tất cả các dịch vụ khác nhau mà tôi mong muốn kết nối với tôi sẽ phải thực hiện nhiều công việc chi tiết thay thế việc triển khai HTTP cụ thể và nếu tôi sử dụng phương pháp tiếp cận sơ khai, tôi sẽ có 3 lớp mỗi dịch vụ này (IService, ConcreteService, StubService) và duy trì các dịch vụ đó khi triển khai một phương thức mới hoặc thay đổi bất kỳ thứ gì sẽ là PITA thực.
Trong triển khai hiện tại, tôi đang sử dụng Mocks để nhận "chế độ vô trùng" miễn phí hầu như không cần phải thực hiện thêm bất kỳ thứ gì chỉ để phù hợp với một hiệu trưởng thử nghiệm nhất định.
Câu hỏi đặt ra là tôi thiếu gì đó? Tôi đã vi phạm một hiệu trưởng thiết kế bằng cách sử dụng Mocks một cách thuận tiện hơn ...?
Ai có thể đưa ra lời khuyên nào về cách lấy chế độ vô trùng từ nhiều dịch vụ bên ngoài khác nhau mà không phải nhảy qua nhiều vòng?
Câu hỏi này có hợp lý không?
Cảm ơn tất cả các câu trả lời.
Chỉnh sửa # 1:
Tôi không rõ ràng trong câu hỏi ban đầu của mình. Bất kỳ đối tượng null hoặc giả nào đều được sử dụng hoàn toàn trong môi trường phát triển/gỡ lỗi/thử nghiệm. Trong quá trình sản xuất, mã gửi các thông điệp này sẽ là việc triển khai thực tế chúng.
Tôi đã bỏ phiếu cho mọi người vì có vẻ như có rất nhiều giải pháp khác nhau cho vấn đề này và tôi sẽ khám phá từng vấn đề.
Vui lòng không nghĩ rằng câu hỏi này đã được trả lời, tôi đánh giá cao nhiều lời khuyên nhất có thể.
Lần thứ hai tôi thấy chủ đề của chủ đề này, một cảnh báo "Đối tượng Null" màu đỏ đã bật ... – abyx