gpt4 book ai didi

c# - 此 Moq 测试主要针对 linq 语法如何工作?

转载 作者:行者123 更新时间:2023-12-02 14:15:08 25 4
gpt4 key购买 nike

我看了这个Introduction to Moq video在 Dimecasts.net 上。在视频中,当这个人设置起订量测试时,他有以下代码:

[Test]
public void TestWithMock()
{
var mockEmailService = new Mock<IEmailService>();

mockEmailService.Expect(x =>
x.SendEmail(It.IsAny<string>,It.IsAny<string>)).Returns(true);

var emailer = new Emailer(mockEmailService.Object);

emailer.SendBatchEmails();
}

这是我的问题:

1) moq 是否循环遍历所有不同类型的字符串来测试 SendBatchEmails 方法? 我想我对模拟的工作原理有点困惑。

2)有人可以解释一下 Expect 部分的 lambda 语法吗?

3)作者首先在SendEmail函数中添加了“”,“”,但是失败了,所以他改为将 It.IsAny<string> ,但我仍然不清楚为什么它失败了“”,“”。

Stackoverflow 没有将字符串关键字放在尖括号中。 (已修复)

最佳答案

1) 起订量不影响 SendBatchEmails有效,因为您没有 mock Emailer类(class)。相反,您正在 mock IEmailService接口(interface),所以如果Emailer类调用 IEmailService 上的方法对象,Moq 将捕获这些调用。

2) 您告诉 Moq 您正在期待 SendEmail方法IEmailService被称为。您还告诉 Moq 当 SendEmail被调用时,您希望 Moq 自动返回 true .

由于 Moq 对象被传递到 Emailer类,此测试将测试 SendBatchEmails 中的代码是否有效调用SendEmail方法。

3) 仅当参数匹配时,期望才会实现。如果您告诉 Moq 您期望 SendEmail被调用 "", ""作为参数,SendEmail用不同的字符串调用,它会失败。 It.IsAny<string>()告诉 Moq 将期望与任何字符串作为参数相匹配。

关于c# - 此 Moq 测试主要针对 linq 语法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com