我在试着模仿我的MailController
_mockMailController = new Mock<IMailController>();
_mockMailController.Setup(x => x.ForgotPassword("test@email.com"));我的控制器接受IMailController作为依赖项,但是当我调用
mailController.ForgotPassword("test@email.com").Deliver();我得到一个NullReferenceException (我猜是因为ForgotPassword不返回任何内容)
理想情况下,我们应该存根EmailResult?
发布于 2013-05-03 21:31:46
我为ActionMailer.Net创建了一个pull请求,它引入了一个IEmailResult接口,使得模拟非常容易。看看这个:
https://bitbucket.org/swaj/actionmailer.net/pull-request/4/iemailresult-interface-for-better/
在拉入请求被合并之前,您可以使用来自我的项目frok的自定义构建。
https://bitbucket.org/hydr/xv-actionmailer.net
模仿get和编写get一样简单(使用FakeItEasy,Moq可能类似):
//SetUp
_myMailer = A.Fake<IMyMailer>();
//Later on in Assert
A.CallTo(() => _myMailer.MyTestEmail()).MustHaveHappened(Repeated.Exactly.Once);当Mailer定义如下时:
public class MailController : MailerBase, IMyMailer
{
public IEmailResult MyTestEmail()
{
To.Add("recipient@sdf.com");
From = "sender@sdf.com";
Subject = "Subject";
return Email();
}
}发布于 2013-05-03 16:01:49
您尚未为模拟从ForgotPassword返回值方法创建设置。对于默认行为,这将返回该类型的默认值,在本例中为null。
您可以像这样模拟返回值:
_mockMailController.Setup(x => x.ForgotPassword("test@email.com"))
.Returns(new SomeType());https://stackoverflow.com/questions/16348886
复制相似问题