Dưới đây là một phần của thực hiện mã trong lớp cha:Làm thế nào để nâng cao một sự kiện trong một thử nghiệm sử dụng Moq?
handler.FooUpdateDelegate += FooUpdate(OnFooUpdate);
protected abstract void OnFooUpdate(ref IBoo boo, string s);
tôi có trong handler chế giễu phương pháp thử nghiệm:
Mock<IHandler> mHandler = mockFactory.Create<IHandler>();
này ...
mHandler.Raise(x => x.FooUpdateDelegate += null, boo, s);
... không phải là đang làm việc. Nó nói:
System.ArgumentException: Không thể xác định sự kiện để đính kèm hoặc tách phương thức Void set_FooUpdateDelegate (FooUpdate).
Tôi muốn nâng cao OnFooUpdate
để kích hoạt mã được kiểm tra ở lớp trẻ em.
Câu hỏi: Làm cách nào tôi có thể nâng cao quyền đại biểu (không phải là trình xử lý sự kiện chung) với Moq?
Nếu tôi đã bỏ lỡ điểm hoàn toàn, vui lòng mở rộng tôi.
Great câu trả lời. Một điều tôi muốn đề cập là bạn có thể phải duy trì thuộc tính FooUpdateDelegate, bằng cách gọi mockMyClass.SetupAllProperties() – Eternal21
@ Eternal21 The Mock đang sử dụng thực thi cụ thể thuộc tính từ MyClass, vì vậy nó hoạt động tốt. Nếu chúng ta chế nhạo một giao diện (nói, IMyClass), thì sẽ không có triển khai cụ thể nào và thiết lập thuộc tính trên mô hình sẽ là cần thiết. –
AlanT
Đó là chính xác trường hợp của tôi. – Eternal21