C# 模拟信号器客户端的方法。单元测试中的分组
我正在为信号器应用程序编写模拟测试用例。我只是在的帮助下开始的,但是我的需求与上面的示例略有不同。 以下是我在谷歌搜索后完成的代码 信号树 单元测试C# 模拟信号器客户端的方法。单元测试中的分组,c#,unit-testing,signalr,moq,C#,Unit Testing,Signalr,Moq,我正在为信号器应用程序编写模拟测试用例。我只是在的帮助下开始的,但是我的需求与上面的示例略有不同。 以下是我在谷歌搜索后完成的代码 信号树 单元测试 公共接口IClientContract{} [测试方法] 公共无效GetNoficationTest() { var hub=新的HubServer(); var mockClients=new Mock(); hub.Clients=mockClients.Object; var all=new Mock(); string message=“要
公共接口IClientContract{}
[测试方法]
公共无效GetNoficationTest()
{
var hub=新的HubServer();
var mockClients=new Mock();
hub.Clients=mockClients.Object;
var all=new Mock();
string message=“要发送的消息”;
mockClients.Setup(m=>m.Group(“Manager”))。返回(消息);
mockClients.Setup(m=>m.All).Returns(All.Object);
hub.GetNofication(“模拟呼叫信号中心”);
all.VerifyAll();
}
我是单元测试应用程序的初学者,只想确认这是否是模拟信号器组的正确方法。使用
集线器组是可模仿的
需要使用必要的方法更新客户合同。在这种情况下,您必须添加Broadcast
方法,以匹配它在集线器中的调用方式
public interface IClientContract {
void Broadcast(string message);
}
接下来,通过设置中心的依赖项来安排测试,并练习测试中的方法
[TestMethod]
public void _GetNoficationTest() {
// Arrange.
var hub = new HubServer();
var mockClients = new Mock<IHubCallerConnectionContext<dynamic>>();
var groups = new Mock<IClientContract>();
var message = "Message to send";
var groupName = "Manager";
hub.Clients = mockClients.Object;
groups.Setup(_ => _.Broadcast(message)).Verifiable();
mockClients.Setup(_ => _.Group(groupName)).Returns(groups.Object);
// Act.
hub.GetNofication(message);
// Assert.
groups.VerifyAll();
}
您是否收到任何错误,或者这是一次代码检查?@Nkosi无错误,测试成功通过。这只是为了让代码审查检查它是否是模拟的正确方式?如果没有,那么需要你的帮助来纠正它。我测试了你上面的代码,但没有通过。我的回答是基于您的代码不工作的事实。在我的应用程序中,使用上面的代码成功地通过了测试。正如我告诉你的,我是编写模拟测试用例的初学者,我只是想确认我是否这样做了。我在这里也发布了另一个单元测试组的例子,以防有任何帮助:
public interface IClientContract {
void Broadcast(string message);
}
[TestMethod]
public void _GetNoficationTest() {
// Arrange.
var hub = new HubServer();
var mockClients = new Mock<IHubCallerConnectionContext<dynamic>>();
var groups = new Mock<IClientContract>();
var message = "Message to send";
var groupName = "Manager";
hub.Clients = mockClients.Object;
groups.Setup(_ => _.Broadcast(message)).Verifiable();
mockClients.Setup(_ => _.Group(groupName)).Returns(groups.Object);
// Act.
hub.GetNofication(message);
// Assert.
groups.VerifyAll();
}
[TestMethod]
public void _GetNoficationTest_Expando() {
// Act.
var hub = new HubServer();
var mockClients = new Mock<IHubCallerConnectionContext<dynamic>>();
dynamic groups = new ExpandoObject();
var expected = "Message to send";
string actual = null;
var groupName = "Manager";
bool messageSent = false;
hub.Clients = mockClients.Object;
groups.Broadcast = new Action<string>(m => {
actual = m;
messageSent = true;
});
mockClients.Setup(_ => _.Group(groupName)).Returns((ExpandoObject)groups);
// Act.
hub.GetNofication(expected);
// Assert.
Assert.IsTrue(messageSent);
Assert.AreEqual(expected, actual);
}