我有一个接口被嘲笑:

public interface IEmailService
{
    void SendAsHtml(string to, string from, string subject, string notification);
    void SendAsHtml(string to, string from, string subject, string notification, string[] cc);
}

以前它是带有params string [] cc的单个方法,但是我在尝试找出构建服务器上的错误时将这些方法拆分开。 我真正想要的是一个严格的模拟,但是我现在以动态方式运行它,因此我可以使用以下验证来比较结果:

emailService.Verify(es => es.SendAsHtml(accountEmail, fromEmail, subject, expectedEmailString));

参数在accountEmail,fromEmail和subject上匹配-似乎不起作用的是ExpectedEmailString(在测试方法中通过string.Format构造)。 在测试过程中以及查看输出时,我已将期望值和实际值写入控制台,它们在构建服务器上看起来是相同的。 这是测试失败(这是我尝试强制进行序数比较的一种变体):

预期对模拟至少调用一次,但从未执行过:es => es.SendAsHtml(.accountEmail,.fromEmail,.subject,It.Is(s => s.Equals(.expectedEmailString,StringComparison.Ordinal)))未配置任何设置。

执行的调用:IEmailService.SendAsHtml(“ user@test.com”,“ sender@email.net”,“ asdfasdf”,“ html长字符串”)

我认为这是相关的设置(所有设置都直接注入到被测控制器中):

    var getPersonalAccount = new Mock<IGetPersonalAccount>(MockBehavior.Strict);
    getPersonalAccount.Setup(gpa => gpa.WithAccountId(userAccountId).Execute()).Returns(account);

    var emailService = new Mock<IEmailService>();

    var trialSettings = new Mock<TrialSettings>(MockBehavior.Strict);
    trialSettings.Setup(ts => ts.Length).Returns(trialLength);
    trialSettings.Setup(ts => ts.FromEmail).Returns(fromEmail);
    trialSettings.Setup(ts => ts.Subject).Returns(subject);

主题设置和发件人地址将通过试用设置返回,并且收件人电子邮件地址将从帐户中删除。 邮件正文也使用帐户中的值进行格式化。

相关位:

  • TeamCity 7.1(Build 23907)-尝试了Nunit 2.5.10和2.6测试运行程序
  • .NET 4
  • NUnit 2.5.10.11092
  • 最小起订量4.0.10827.0

#1楼 票数:0 已采纳

因此,我最后只是删除了巨型HTML字符串上的“整个字符串”检查,仅检查并确认了我们要注入到字符串中的值(通过string.format)。 这会在本地和服务器上传递。 这不是理想的,但我想它也不是世界上最糟糕的事情。

  ask by AlexCuse translate from so

未解决问题?本站智能推荐:

2回复

使用最小起订量时包含问题

我想测试一个删除方法。 delete方法在模拟服务中调用(不与moq一起模拟)。 该服务管理对象列表。 对象的类是从重写equals()的基类派生的。 当我打电话 我弄错了 不调用基类中的Equals方法。 列表中的对象使用最小起订量来模拟。 我该如何设置调用基类的Eq
2回复

Moq文件版本和程序集版本不匹配,从而导致TeamCity出现问题?

设置TeamCity 5.0.1首次运行单元测试,我们看到此错误: 测试失败。 System.IO.FileNotFoundException:无法加载文件或程序集'Moq,Version = 3.1.416.3,Culture = neutral,PublicKeyToken = 69
2回复

最小起订量测试

我正在尝试完成整个测试工作,并决定从现有的应用程序开始,我们使用该应用程序记录到办公室的电话呼叫。 该应用程序是ac#,mvvm,桌面应用程序,至少到目前为止,我只是试图确定测试框架的运行方式。 我创建了一个新的测试项目,添加了对moq的引用,并试图运行一个测试来验证一个方法是否被另一个方法
1回复

最小起订量和属性

我试图创建一个测试用例,需要在模拟对象上设置一个属性。 我一直在关注这个问题的答案,但CommandEventProcessingDecorator方法中的属性为null。 我究竟做错了什么?
1回复

如何最小起订量FromSqlInterpolated?

请帮助从上下文中调用 FromSqlInterpolated 方法。 我有一个简单的方法: 我写了一个测试: 并收到此异常: 我如何模拟这一行或重写它:
1回复

最小起订量和Transactionscope,您可以让最小起订量不算吗?

当我使用我不提交的Transactionscope时,moq仍会看到对数据库的所有回滚调用。 有办法吗 并不是 使测试成功?
4回复

使用最小起订量的TDDModelViewPresenter

我看过使用TDD和MVP模式创建一个小型应用程序的视频。 该视频显示在这里: http://blog.jpboodhoo.com/content/binary/appliedTestDrivenDevelopmentPart3/appliedtestdrivendevelopmentpar
3回复

最小起订量设置方法

我需要测试许多类似的方法 测试所有方法非常相似: 对于Method2,测试方法将与方法名称相同。 对于Method3,除了方法名称外,参数类型也被更改。 有什么方法可以将所有这些提取到辅助泛型函数并传递参数类型和方法进行测试? 我想写这样的东西: