Moq步步惊心之第一步
我们在写Unit Test的时候是避免不了写Mock的。好的Mock库可以给我们极大的方便。在C++里我们有google mock库。在.NET里我们可以使用开源的Moq库。
你可以通过这个链接来访问Moq的官方网站: http://code.google.com/p/moq/wiki/QuickStart
这这篇文档里,我们将通过一个小的例子来学习如何使用Moq库。
public interface IFoo
{
string GetClientName();
void SetClientName(string strName);
}
class FooClient
{
public IFoo Foo { get; set; }
public bool IsVIP()
{
return Foo.GetClientName().Equals("Bill Gates");
}
public void RenameClient()
{
Foo.SetClientName("Bill Gates");
}
}
在代码里我们有一个interface, IFoo,同时还有另外一个类, FooClient。FooClient通过调用IFoo的方法来获取 或者设置值。
在我们的Unit Test里,我们需要来test FooClient的两个方法。这个时候我们可以来Mock IFoo这个接口。
[TestMethod]
public void TestMoqInstalledSuccessfully()
{
//
// TODO: Add test logic here
//
Mock<IFoo> foo = new Mock<IFoo>();
foo.Setup(fw => fw.GetClientName()).Returns("Bill Gates");
FooClient fooClient = new FooClient();
fooClient.Foo = foo.Object;
fooClient.IsVIP();
}
[TestMethod]
public void Test_SetClientName()
{
//
// TODO: Add test logic here
//
Mock<IFoo> foo = new Mock<IFoo>();
FooClient fooClient = new FooClient();
fooClient.Foo = foo.Object;
fooClient.RenameClient();
foo.Verify(fw => fw.SetClientName("Bill Gates"));
}

浙公网安备 33010602011771号