【问题标题】:Mocking MailController with ActionMailer.net using Moq 3使用 Moq 3 使用 ActionMailer.net 模拟 MailController
【发布时间】:2015-01-08 12:32:14
【问题描述】:

我是 Moq 的新手,所以任何帮助都会很棒。当我尝试设置测试时,我的代码中不断出现空引用错误。这是我收到以下错误的代码行。

_iMailController.RequesterEmail(model).Deliver();

这是我的测试的样子:

 _mockMailController = new Mock<IMailController>();

 mockMailController .Setup(x => x.RequesterEmail(new Model())).Returns(**new EmailResult()**);

粗体部分是我坚持的地方。它需要 7 个参数,不知道该放什么来伪造 EmailResult。

【问题讨论】:

标签: asp.net-mvc-4 unit-testing moq


【解决方案1】:

你很困惑,Ret​​urn 部分将单个返回值,如字符串、列表、bool 或 Int ect。

因此,您可以轻松地传递您在 IMailController 上的 RequesterEmail 上获得的值作为回报。因此,您必须检查从 RequesterEmail 方法返回的值。

您也可以使用以下代码作为示例:

mockMailController .Setup(x => x.RequesterEmail(It.IsAny<Model>())).Returns(**new EmailResult()**);

也请参考以下部分。

它提到了您在 RequesterEmail 方法中传递了多少参数。如果方法上传递了 7 个参数,那么您可能必须像 bleow 一样传递 7 个参数

请深入查看参数并在此处返回两个代码。 看看我在下面两个代码中使用 ModelClass 的地方。

如果方法有如下参数:

public void RequesterEmail( string, int, list, EmailClass, someClass, bool, string);
{
return  ModelClass;
}

那么你可能需要编写如下代码

mockMailController .Setup(x => x.RequesterEmail(It.IsAny<string>(), It.IsAny<int>(), 
It.IsAny<EmailClass>(), It.IsAny<someClass>(), It.IsAny<bool>(), 
It.IsAny<string>())).Return(ModelClass)

【讨论】:

    猜你喜欢
    • 2017-09-01
    • 2011-06-13
    • 2019-09-11
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多