【发布时间】:2009-10-16 19:07:09
【问题描述】:
我正在寻找一些使用 NMock2 模拟 CRUD 应用程序的数据库调用的基本示例。
谢谢,
克里斯
【问题讨论】:
-
您想证明正在调用数据层(使用 Expect)还是为协作对象提供一些无害的行为(使用 Stub)?
标签: database unit-testing tdd mocking nmock
我正在寻找一些使用 NMock2 模拟 CRUD 应用程序的数据库调用的基本示例。
谢谢,
克里斯
【问题讨论】:
标签: database unit-testing tdd mocking nmock
设置:
[SetUp]
public void SetUp()
{
mocks = new Mockery();
mockDBLayer = _mocks.NewMock<IDBLayer>();
//Inject the dependency somehow
sut = new SUT(_mockDBLayer );
}
测试:
[Test]
public void testMethodName_TestCase()
{
var dbRetrunValue = //whatever type
Expect.Once.On(mockDBLayer).Method("dbMethod").Will(Return.Value(dbRetrunValue));
//exercise
var actual = sut.methodName();
//Assert
...
}
验证是否需要
[TearDown]
public void TearDown()
{
mocks.VerifyAllExpectationsHaveBeenMet();
}
不过,我更喜欢最小起订量: http://code.google.com/p/moq/
【讨论】:
“数据库调用”是一个可以猜测的粗略术语 - 您是指测试 DAL,还是测试其之上的层?
如果您的意思是测试您的 DAL,您需要查看如何获得实际的 DataReader 或 DataTable 或其他任何东西,以便您可以将其替换为 mock。
请参阅此类涵盖 IoC and mocking data access 的博客文章,或此类文章 that cover mocking a datareader 以了解入门。
【讨论】: