Tôi đang sử dụng SignalR trong một dự án MVC5. Tôi đang thực hiện cuộc gọi trong bộ điều khiển như thế này:Tôi nên giả sử SignalR HubContext trong Bộ điều khiển để kiểm tra đơn vị như thế nào?
private Microsoft.AspNet.SignalR.IHubContext blogHubContext = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<BlogHub>();
blogHubContext.Clients.All.addNewBlogToPage(RenderPartialViewToString("Blog", model));
Tôi đang cố gắng đơn vị kiểm tra các hành động trong bộ điều khiển này. Các bài kiểm tra đơn vị đã hoạt động tốt cho đến khi tôi thêm chức năng SignalR. Bây giờ tôi đang cố gắng tìm ra cách chế tạo HubContext. Tôi có 2 khả năng.
tôi thiết lập các trung tâm trong các nhà xây dựng vì vậy tôi có một cái gì đó như sau:
private Microsoft.AspNet.SignalR.IHubContext blogHubContext; public BlogController(Microsoft.AspNet.SignalR.IHubContext topicHub = null){ blogHubContext = (blogHub != null) ? blogHub : Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<BlogHub>(); }
Sau đó, tôi bằng cách nào đó có thể thử các HubContext và gửi nó thông qua bộ điều khiển khi tôi tạo ra nó trong các đơn vị kiểm tra. Cho đến nay tôi chỉ có mặc dù điều này:
Mock<IHubContext> blogHub = new Mock<IHubContext>();
(Lưu ý:. Tôi đã đơn giản hóa mọi thứ để tập trung vào chỉ phía SignalR thứ Ngoài ra còn có kho được sử dụng trong bộ điều khiển vv)
Ngoài ra, tôi nghĩ về việc tạo một lớp khác để bọc trung tâm, và sau đó chỉ cần gọi các hàm từ đây để thực hiện các cuộc gọi đến hub. Điều này tôi thấy là dễ dàng hơn nhiều để thử nghiệm cho các bài kiểm tra đơn vị của tôi, nhưng không chắc chắn nếu đó là một ý tưởng tốt.
Hướng được đánh giá cao. Hay cả hai đều có thể chấp nhận được? Cảm ơn.
tôi thích lựa chọn 1 vì bạn không cần một lớp thêm lớp wrapper mà không thêm bất kỳ chức năng. –
@ AD.Net Cảm ơn. Trong trường hợp đó, bất kỳ ý tưởng nào làm thế nào tôi có thể đi về mocking các trung tâm cho các chức năng tôi đang sử dụng. Tôi đã cố gắng để làm việc ra làm thế nào để làm điều đó dẫn tôi suy nghĩ về các tùy chọn thứ hai. – AndrewPolland
Bạn có quen với chế nhạo nói chung không? Mocking một trung tâm signalr có vẻ như nó chỉ là về giống như chế giễu bất cứ điều gì khác. –