我是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文件?
谢谢!