【发布时间】:2011-05-04 22:47:35
【问题描述】:
我有一些代码可以执行一些遗留的“数据库”操作,然后处理结果。我想编写一个单元测试来检查调用遗留代码而不与“数据库”交互的方法。
我的代码如下所示:
public static bool CallRoutine(LegacySession session, /* routine params*/)
{
try
{
LegacyRoutine routine = session.CreateRoutine(/* routine params */);
routine.Call();
// Process result
}
catch (LegacyException ex)
{
// Perform error handling
}
}
如果这是我的全部代码,我将创建 LegacySession 和 LegacyRoutine 实现的接口,然后编写单元测试,使用这些接口的模拟实现,使用 MOQ 或类似的东西。问题是我无法访问LegacyRoutine 或LegacySession 的代码,所以我无法让它们实现接口。
关于如何在不过多更改生产代码的情况下做到这一点的任何想法?
【问题讨论】:
-
你有没有研究过 Moq 之类的模拟库:code.google.com/p/moq
-
@Kane:我打算使用 Moq,但我认为我需要从接口派生为“Moqed”的类才能做到这一点?我无法更改任何一个 Legacy... 类
标签: c# unit-testing nunit dependencies