Luk*_*uke 3 .net database testing unit-testing web-services
我刚刚在Nunit的c#中完成了测试驱动开发的教程.我现在想为我的新项目使用单元测试,但是我在编写测试时遇到了困难.如何为涉及数据库或Web服务访问的类编写单元测试?有人能给我一些课/单元测试的例子吗?
这是一个示例伪代码(这里使用的模拟生成器是Moq框架):
interface IEmailer
{
void Send(Email email);
}
class RealEmailer : IEmailer
{
public void Send(Email email)
{
// send
}
}
class UsesEmailer
{
private IEmailer _emailer;
public UsesEmailer(IEmailer emailer)
{
_emailer = emailer;
}
public foo(Email email)
{
// does other stuff
// ...
// now sends email
_emailer.Send(email);
}
}
class MyUnitTest
{
[Test]
public Test_foo()
{
Mock<IEmailer> mock = new Mock<IEmailer>();
Email m = new Email();
mock.Expect(e => e.Send(It.Is<Email>(m)));
UsesEmailer u = new UsesEmailer(mock.Object);
u.Send(m);
mock.Verify();
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
现在,如果你正在测试RealEmailer,有几种方法,但基本上你必须设置测试发送电子邮件,然后你检查.这不是一个单元测试,因为你不仅要测试你的代码,还要测试配置,网络,交换服务器......实际上如果你做的RealEmailer代码很少,你可以跳过编写单元测试.