我有一个静态类,它创建一个数据库类实例。我正在寻找一种方法来在我的测试中对数据库类进行填充/存根。
public partial class Y : Form
{
static Models.DBModel db = new Models.DBModel();
....
不幸的是我无法更改代码。有什么办法可以在我的测试中模拟这个数据库类吗?
答案 0 :(得分:0)
这对我有用:
予。更新yourdll.fakes
以包含:
...
<ShimGeneration>
<Clear/>
...
<Add FullName="Models.DBModel"/>
...
</ShimGeneration>
...
II。在TestClass
创建方法中,[TestInitialize]
和[TestCleanup]
属性:
using Models.Fakes;
IDisposable shimsContext;
[TestInitialize]
public void SetUp()
{
shimsContext = ShimsContext.Create();
ShimDBModel.Constructor = (@this) =>
{
ShimDBModel shim = new ShimDBModel(@this)
{
// here you can provide shim methods for DBModel
};
};
}
[TestCleanup]
public void CleanUp()
{
// Let's do not forget to clean up shims after each test runs
shimsContext.Dispose();
}
III。最后,在您的测试中,Y.db
应该是SetUp
方法中创建的 Shim 。
[TestMethod]
public void Test()
{
Y.db... // db should be shim
}