C# 使用默认/预期参数验证失败

C# 使用默认/预期参数验证失败,c#,moq,C#,Moq,下面的代码失败了,有人能帮忙吗。从我所看到的情况来看,我无法解释为什么我列出的预期参数不会导致方法触发 测试代码: Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>(); Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>(); mailMock.Verify( m => m.SendMail(

下面的代码失败了,有人能帮忙吗。从我所看到的情况来看,我无法解释为什么我列出的预期参数不会导致方法触发

测试代码:

Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>();
Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>();
mailMock.Verify(
    m => m.SendMail(
        It.IsAny<string>(),
        It.IsAny<string>(),
        It.IsAny<string[]>(),
        It.IsAny<string[]>(),
        It.IsAny<string[]>(),
        It.IsAny<string>(),
        It.IsAny<string>(),
        It.IsAny<string[]>()
    ), 
    Times.Exactly(1)
);
target.Setup(t => t.getMailService()).Returns(mailMock.Object);
target.Object.notify();
方法签名:

public virtual string SendMail(string server, string from, string[] to, string[] ccs, string[] bccs, string title, string body, string[] attachments)

执行测试后,您需要验证/断言:

// Arrange
Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>();
Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>();
target.Setup(t => t.getMailService()).Returns(mailMock.Object);

// Act
target.Object.notify();

// Assert
mailMock.Verify(
            m => m.SendMail(
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>()
            ), 
            Times.Exactly(1)
        );
//排列
Mock target=new Mock();
Mock mailMock=新Mock();
target.Setup(t=>t.getMailService()).Returns(mailMock.Object);
//表演
target.Object.notify();
//断言
mailMock。验证(
m=>m.SendMail(
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny()
), 
正是(1)
);

执行测试后,您需要验证/断言:

// Arrange
Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>();
Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>();
target.Setup(t => t.getMailService()).Returns(mailMock.Object);

// Act
target.Object.notify();

// Assert
mailMock.Verify(
            m => m.SendMail(
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>()
            ), 
            Times.Exactly(1)
        );
//排列
Mock target=new Mock();
Mock mailMock=新Mock();
target.Setup(t=>t.getMailService()).Returns(mailMock.Object);
//表演
target.Object.notify();
//断言
mailMock。验证(
m=>m.SendMail(
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny()
), 
正是(1)
);

执行测试后,您需要验证/断言:

// Arrange
Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>();
Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>();
target.Setup(t => t.getMailService()).Returns(mailMock.Object);

// Act
target.Object.notify();

// Assert
mailMock.Verify(
            m => m.SendMail(
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>()
            ), 
            Times.Exactly(1)
        );
//排列
Mock target=new Mock();
Mock mailMock=新Mock();
target.Setup(t=>t.getMailService()).Returns(mailMock.Object);
//表演
target.Object.notify();
//断言
mailMock。验证(
m=>m.SendMail(
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny()
), 
正是(1)
);

执行测试后,您需要验证/断言:

// Arrange
Mock<ExpiryNotifier> target = new Mock<ExpiryNotifier>();
Mock<MailServiceWrapper> mailMock = new Mock<MailServiceWrapper>();
target.Setup(t => t.getMailService()).Returns(mailMock.Object);

// Act
target.Object.notify();

// Assert
mailMock.Verify(
            m => m.SendMail(
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string[]>(),
                It.IsAny<string>(),
                It.IsAny<string>(),
                It.IsAny<string[]>()
            ), 
            Times.Exactly(1)
        );
//排列
Mock target=new Mock();
Mock mailMock=新Mock();
target.Setup(t=>t.getMailService()).Returns(mailMock.Object);
//表演
target.Object.notify();
//断言
mailMock。验证(
m=>m.SendMail(
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny()
), 
正是(1)
);


.Verify()
是在事实之后调用的方法,目的是验证您建议的方法是否被调用。

.Verify()
是在事实之后调用的方法,目的是验证您建议的方法是否被调用。

.Verify()
是一个在事实之后调用的方法,目的是验证您建议的方法是否被调用。

.verify()
是一个在事实之后调用的方法,目的是验证您建议的方法是否被调用。

那么您实际使用的是
mailMock
?你有什么错误?如果您发布一个简短但完整的程序来演示问题,这会有所帮助。感谢您用更多代码编辑了orig post。您正在验证期望值,然后再调用
notify
。顺便说一句,通过构造函数注入服务,然后重写创建服务的方法可能更明智。那么您实际使用的是
mailMock
?你有什么错误?如果您发布一个简短但完整的程序来演示问题,这会有所帮助。感谢您用更多代码编辑了orig post。您正在验证期望值,然后再调用
notify
。顺便说一句,通过构造函数注入服务,然后重写创建服务的方法可能更明智。那么您实际使用的是
mailMock
?你有什么错误?如果您发布一个简短但完整的程序来演示问题,这会有所帮助。感谢您用更多代码编辑了orig post。您正在验证期望值,然后再调用
notify
。顺便说一句,通过构造函数注入服务,然后重写创建服务的方法可能更明智。那么您实际使用的是
mailMock
?你有什么错误?如果您发布一个简短但完整的程序来演示问题,这会有所帮助。感谢您用更多代码编辑了orig post。您正在验证期望值,然后再调用
notify
。顺便说一句,通过构造函数注入服务可能更明智,然后必须重写创建服务的方法!这与我使用PHPUnit时的工作方式不同,PHPUnit在执行任何随后调用它的代码之前,用它们的固定返回值设置所有模拟对象。我不知道PHPUnit是如何工作的。感谢您的分享。这有点不同,因为您没有设置固定返回值,而是在检查“这是否被调用”<代码>设置发生在“排列”阶段,
验证
发生在“断言”阶段。啊,好的,谢谢-这很有效!这与我使用PHPUnit时的工作方式不同,PHPUnit在执行任何随后调用它的代码之前,用它们的固定返回值设置所有模拟对象。我不知道PHPUnit是如何工作的。感谢您的分享。这有点不同,因为您没有设置固定返回值,而是在检查“这是否被调用”<代码>设置发生在“排列”阶段,
验证
发生在“断言”阶段。啊,好的,谢谢-这很有效!这与我使用PHPUnit时的工作方式不同,PHPUnit在执行任何随后调用它的代码之前,用它们的固定返回值设置所有模拟对象。我不知道PHPUnit是如何工作的。谢谢分享。这是我最喜欢的