我想对下面的代码进行单元测试。现在我正在使用NUnit和Rhino Mock。
注意:所有NUnit测试用例都不应该执行任何数据库操作
interface IdbOperation
{
int insert();
}
public class databaseactivity:IdbOperation
{
public databaseactivity()
{
verifyDBConnection();
}
void verifyDBConnection()
{
DbManager dbManager=new DbManager();
if(dbManager.state()!=True)
{
Throw new DatabaseException();
}
}
public int insert(bo obj)
{
Serviceclient serviceClient=new Serviceclient();
serviceClient.insert(obj);
}
}
在上面的代码中,我想为insert方法编写一个单元测试用例。我尝试了很多方法但是无法模拟。所以可以请任何人帮我模拟插入方法.ASAP
您也可以向我推荐任何其他模拟框架。
答案 0 :(得分:0)
这个怎么样?
public databaseactivity(IDbManager dbManager = null)
{
DbManager dbManager = dbManager ?? new DbManager();
// ...
}
如果你需要重新创建实例(就像ServiceclientFactory
似乎是这样),你需要注入一个工厂(我会尽量避免这种情况,因为它会使事情变得更复杂):
public databaseactivity(ServiceclientFactory serviceClientFactory = null, /*...*/)
{
// ...
this.serviceClientFactory = serviceClientFactory ?? new DefaultServiceClientFactory();
}
public int insert(bo obj)
{
serviceClient = this.serviceClientFactory.CreateServiceClient();
serviceClient.insert(obj);
}