模拟演示工作时出现问题(Nunit 和 ReSharper)
我试图通过观看此演示来掌握模拟和 ReSharper http://www.bestechvideos。 com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq 我确信我正确地遵循了代码,但出现了错误。 您能否给我一些指示,告诉我我是否出错了?
错误:-类名此时无效 错误:-发送电子邮件未实现
using System;
using System.Collections.Generic; // for the Dictionary
using NUnit.Framework;
using Moq;
namespace MvcUnitTst2.Tests
{
[TestFixture]
public class IntoToMoq
{
[Test]
public void NonMock()
{
var emailService = new EmailService();
var emailer = new Emailer(emailService);
emailer.SendBatchEmails();
}
}
public class Emailer
{
public Emailer(IEmailService emailService)
{
// error here:- class name is not valid at this point
MvcUnitTst2.Tests.EmailService = emailService;
}
public void SendBatchEmails()
{
// build a list of emails
// code below fails
//Dictionary<string, string> emails = new Dictionary<string, string>
// {
// {"[email protected]","Hello 1"},
// {"[email protected]","Hello 2"},
// {"[email protected]","Hello 3"},
// {"[email protected]","Hello 4"}
// };
// use this instead
var emails = new Dictionary<string, string>
{
{"[email protected]","Hello 1"},
{"[email protected]","Hello 2"},
{"[email protected]","Hello 3"},
{"[email protected]","Hello 4"}
};
foreach (KeyValuePair<string, string> email in emails)
{
if(!MvcUnitTst2.Tests.EmailService.SendEmail(email.Key,email.Value))
{
throw new Exception("Some message here");
}
}
}
private IEmailService EmailService { get; set; }
}
// the error is here:- send email is not implemented
public class EmailService: IEmailService
{
public static bool SendEmail(string emailAddress,string message)
{
return false;
}
}
public interface IEmailService
{
bool SendEmail(string emailAddress, string message);
}
}
I am trying to get to grips with mocking and ReSharper by watching this demo
http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq
I'm sure I followed the code correctly but I'm getting errors.
Could you give me some pointers as to were I'm going wrong?
errors:-class name is not valid at this point
errors:-send email is not implemented
using System;
using System.Collections.Generic; // for the Dictionary
using NUnit.Framework;
using Moq;
namespace MvcUnitTst2.Tests
{
[TestFixture]
public class IntoToMoq
{
[Test]
public void NonMock()
{
var emailService = new EmailService();
var emailer = new Emailer(emailService);
emailer.SendBatchEmails();
}
}
public class Emailer
{
public Emailer(IEmailService emailService)
{
// error here:- class name is not valid at this point
MvcUnitTst2.Tests.EmailService = emailService;
}
public void SendBatchEmails()
{
// build a list of emails
// code below fails
//Dictionary<string, string> emails = new Dictionary<string, string>
// {
// {"[email protected]","Hello 1"},
// {"[email protected]","Hello 2"},
// {"[email protected]","Hello 3"},
// {"[email protected]","Hello 4"}
// };
// use this instead
var emails = new Dictionary<string, string>
{
{"[email protected]","Hello 1"},
{"[email protected]","Hello 2"},
{"[email protected]","Hello 3"},
{"[email protected]","Hello 4"}
};
foreach (KeyValuePair<string, string> email in emails)
{
if(!MvcUnitTst2.Tests.EmailService.SendEmail(email.Key,email.Value))
{
throw new Exception("Some message here");
}
}
}
private IEmailService EmailService { get; set; }
}
// the error is here:- send email is not implemented
public class EmailService: IEmailService
{
public static bool SendEmail(string emailAddress,string message)
{
return false;
}
}
public interface IEmailService
{
bool SendEmail(string emailAddress, string message);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的类实现了 IEmailService 接口,但您将 SendEmail 标记为静态。
为什么 c# 不允许静态方法实现接口
另外,这里您尝试将一个实例分配给一个类。
以下是这些问题的修复代码:
You have your class implementing the IEmailService interface, but you have SendEmail marked as static.
Why doesn't c# allow static methods to implement an interface
Also, here you're trying to assign an instance to a class.
Here's the fixed up code for these issues: