public void Test1() { using (var mocker = AutoMock.GetStrict()) { mocker.VerifyAll = true; var mahuaApi = mocker.Mock <IMahuaApi>(); var msgSend = false; mahuaApi .Setup(x => x.SendPrivateMessage("472158246", "请马上捐款")) .Callback <string, string>((qq, msg) => { _testOutputHelper.WriteLine($"测试将消息发送给{qq},消息是{msg}"); msgSend = true; }); // 这里使用的是V2 IPrivateMessageFromFriendReceivedMahuaEvent @event = mocker.Create <PrivateMessageFromFriendReceivedMahuaEventV2>(); @event.ProcessFriendMessage(new PrivateMessageFromFriendReceivedContext { FromQq = "472158246", Message = "请马上捐款收到回复", SendTime = DateTime.Now }); // 注意,这里是true msgSend.Should().BeTrue(); } }
public void Test() { // 一般的单元测试都分为三个部分 Arrange(准备) Action(执行) 和 Assert(断言) // Arrange 对单元测试中需要测试的准备参数进行初始化 // Action 执行需要测试的逻辑 // Assert 对测试结果是否正确进行判断 using (var mocker = AutoMock.GetStrict()) { // Moq的参数,确定在整个单元测试结束之后,所有被模拟的方法都已经被执行。 mocker.VerifyAll = true; #region Arrange // 生成一个IMahuaApi的实现,这个实现的所有方法都是没有实现的,需要进一步填充 var mahuaApi = mocker.Mock <IMahuaApi>(); // 用来记录消息是否已经发送的变量,为了在断言中使用 var msgSend = false; // 对MahuaApi中的SendPrivateMessage方法进行模拟 // 当调用参数是“472158246”和“呵呵哒”时,调用xunit帮助类在控制台输出消息 // 并设置变量msgSend为true 表示,消息确实已经回发了 mahuaApi .Setup(x => x.SendPrivateMessage("472158246", "呵呵哒")) .Callback <string, string>((qq, msg) => { _testOutputHelper.WriteLine($"测试将消息发送给{qq},消息是{msg}"); msgSend = true; }); #endregion #region Action //创建需要测试的类,由于使用了Autofac.Extras.Moq,构造函数注入的过程会自动执行 IPrivateMessageFromFriendReceivedMahuaEvent @event = mocker.Create <PrivateMessageFromFriendReceivedMahuaEvent>(); // 模拟某人向机器人发送了消息 @event.ProcessFriendMessage(new PrivateMessageFromFriendReceivedContext { FromQq = "472158246", Message = "呵呵哒", SendTime = DateTime.Now }); #endregion #region Assert // 根据这个变量判断 机器人是否成功回发了消息 msgSend.Should().BeTrue(); #endregion } }
public void Test2() { using (var mocker = AutoMock.GetStrict()) { mocker.VerifyAll = true; // 因为我们确定不会调用IMahuaApi,所以不需要Mock // 这里使用的是V2 IPrivateMessageFromFriendReceivedMahuaEvent @event = mocker.Create <PrivateMessageFromFriendReceivedMahuaEventV2>(); @event.ProcessFriendMessage(new PrivateMessageFromFriendReceivedContext { FromQq = "472158246", Message = "呵呵哒", SendTime = DateTime.Now }); } }