填充由静态类实例化的类

时间:2015-12-06 21:12:19

标签: c# unit-testing microsoft-fakes

我有一个静态类,它创建一个数据库类实例。我正在寻找一种方法来在我的测试中对数据库类进行填充/存根。

public partial class Y : Form
{
    static Models.DBModel db = new Models.DBModel();
    ....

不幸的是我无法更改代码。有什么办法可以在我的测试中模拟这个数据库类吗?

1 个答案:

答案 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
}