我需要一些如何单元测试这种方法。问题是FsFileGroupFile不容易被模拟,它具有复杂的构造函数需求,并且不直接使用接口。另一方面是_blockReaderFactory
是一个界面,因此容易模拟。我怎样才能嘲笑这样一个复杂的对象。我正在使用Rhino Mocks和Microsoft单元测试框架。有人有主意吗?单元测试与具有构造函数的依赖项
public void ReadGeneral(FsFileGroupFile a_file, FileItemData a_fileItemData)
{
try
{
var blockReader = _blockReaderFactory.Create(a_file.File.FullName, "CabinetData/StartData");
var version = blockReader.ReadVersion();
var name = blockReader.ReadString();
var type = blockReader.ReadString();
var defaultHeight = blockReader.ReadDouble();
var defaultWidth = blockReader.ReadDouble();
var defaultDepth = blockReader.ReadDouble();
a_fileItemData.Name = name;
a_fileItemData.DefaultWidth = defaultWidth * 100.0;
a_fileItemData.DefaultHeight = defaultHeight * 100.0;
a_fileItemData.DefaultDepth = defaultDepth * 100.0;
}
catch (Exception ex)
{
throw new IOException("General data could not be read from block data.", ex);
}
}
我使用C#而不是Java。对不起,我没有在帖子中说过。我想这就是我要做的。看起来很奇怪,但有一个接口只用于测试。但是,我正在wh end结束。 – Jordan
@Jordan:那么,在基于反射的嘲笑框架很常见之前,就是这么做的;)我对犀牛(或C#)不熟悉,不知道是否有更好的方法来实现这一点,恐怕... –