这是一个示例函数,它与一个实体一起工作,将其保存到一个数据库,然后导致问题,因为我们不能为它写一个单元测试。检查出来:我该如何测试一个将记录插入RIA服务数据库的函数?
// this class exists in a Silverlight Class Library
public class EmployeeSaver
{
....
public void Go()
{
Employee e = new Employee();
e.Name="Jeremiah";
... // Other stuff that really needs to be tested
_DataContext.Employees.Add(e);
_DataContext.SubmitChanges();
}
}
因为RIA服务的性质,一个DomainService不运行在Silverlight单元测试框架内部。这意味着我在进行单元测试时无法访问RIA。
我们已经考虑过模拟数据库,但是这个类实际上创建了一个实体(Employee)来添加到数据库中。这是有问题的,因为模拟数据库不使用这个实体,而是一个看起来与原始实体类似的MockEntity类。
我们不是试图测试RIA本身,而是如何使用RIA生成的实体。
我的最终目标是写一个类似的功能:
[TestMethod]
public void Test()
{
EmployeeSaver s = new EmployeeSaver();
s.Go();
Assert.IsEqual(DataContext.Employees.Last().Name, "Jeremiah");
}
如何测试这个功能呢?我应该使用什么测试框架?我是否使用Silverlight测试框架?
艰难的一个...... :( – 2009-10-13 21:07:08
测试多个层次是不容易的...模拟,测试单独或重新考虑? – 2009-10-14 08:58:16