如何使用Shim with Microsoft Fakes编写更新类型单元测试

时间:2016-10-21 20:52:22

标签: c# xml unit-testing microsoft-fakes shim

我是Shim和Microsoft Fakes的新手。我一直在使用Shim进行Get()方法的单元测试。但是,我对如何将它用于Update()方法感到困惑。任何人都可以给我一个提示吗?谢谢!

示例代码:

public static class Application
{
    public static void SubmitApplication(Models.Application app)
    {
        var o = Order.NewOrder();
        o.id = app.id;
        o.price = app.price;
        ...
        ...
        o.SaveOrder();
    }
}

测试项目: 对于GetApplication(Id)单元测试,我们有一个CreateTestData()方法从xml文件中读取测试数据,如下所示:

public DataSet CreateTestData(string DataFile = "")
    {
        DataSet ds = new DataSet();

        if (DataFile == "")
        {
            ds.ReadXml($@"{Path.GetFullPath(".")}\application.xml");
        }
        else
        {
            ds.ReadXml($@"{Path.GetFullPath(".")}\" + DataFile + ".xml");
        }
        return ds;
    }

然后使用ShimContext测试GetApplication(id)方法。

    [TestMethod]
    [DeploymentItem(@".\Data\application.xml")]
    public void GetApplication()
    {
        using (ShimsContext.Create())
        {
            //Arrange
            SqlCommon.ShimSqlObjects();
            SqlCommon.ShimDbAdapter(CreateTestData());

            var result = Application.GetApplication(1)
            ......
        }
    }

现在我很困惑如何使用虚假数据进行更新,这是我的方法SubmitApplication()。

    [TestMethod]
    [DeploymentItem(@".\Data\applicationToSubmit")]
    public void CIMS_Interop_SubmitApplication()
    {
        using (ShimsContext.Create())
        {
            //Arrange
            SqlCommon.ShimSqlObjects();
            SqlCommon.ShimDbAdapter(CreateTestData("applicationToSubmit"));

            //???
        }
    }

我想伪造传递给方法的数据(“applicationToSubmit.xml”)。是否可以从xml文件中读取伪造参数?更重要的是如何测试应用程序是否已保存?如果是假数据,数据保存到哪里?到一个xml文件?

谢谢!

0 个答案:

没有答案