Tôi đang viết một bài kiểm tra phụ thuộc vào kết quả của một phương thức mở rộng nhưng tôi không muốn phương pháp mở rộng đó sẽ không bao giờ phá vỡ bài kiểm tra này trong tương lai. Chế giễu kết quả đó dường như là lựa chọn hiển nhiên nhưng Moq dường như không đưa ra cách ghi đè phương thức tĩnh (một yêu cầu đối với phương thức mở rộng). Có một ý tưởng tương tự với Moq.Protected và Moq.Stub, nhưng họ dường như không cung cấp bất cứ điều gì cho tình huống này. Tôi đang thiếu một cái gì đó hay tôi nên đi về điều này theo một cách khác?
Đây là một ví dụ nhỏ không thành công với thông thường "Kỳ vọng không hợp lệ trên thành viên không thể ghi đè" . Đây là một ví dụ tồi về việc bắt chước một phương thức mở rộng, nhưng nó nên làm.
public class SomeType {
int Id { get; set; }
}
var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
.Returns(new SomeType { Id = 5 });
Đối với bất kỳ người nghiện TypeMock nào có thể đề nghị tôi sử dụng Isolator thay thế: Tôi đánh giá cao nỗ lực vì có vẻ như TypeMock có thể thực hiện công việc bị bịt mắt và say xỉn, nhưng ngân sách của chúng tôi sẽ không sớm tăng lên.