【发布时间】:2009-10-14 22:43:17
【问题描述】:
这是一个与实体一起工作的示例函数,将其保存到数据库中,然后由于我们无法为其编写单元测试而导致问题。看看吧:
// 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。
我们考虑过模拟数据库,但这个类实际上创建了一个实体(雇员)以添加到数据库中。这是有问题的,因为 Mock Databases 不使用这个实体,而是使用一个看起来与原始实体相似的 MockEntity 类。
我们不是要测试 RIA 本身,而是我们如何使用 RIA 生成的实体。
我的最终目标是编写一个类似的函数:
[TestMethod]
public void Test()
{
EmployeeSaver s = new EmployeeSaver();
s.Go();
Assert.IsEqual( DataContext.Employees.Last().Name, "Jeremiah" );
}
如何测试这个功能?我应该使用什么测试框架?我离使用 Silverlight 测试框架还有距离吗?
【问题讨论】:
-
测试多层绝非易事...模拟、单独测试还是重新考虑?
标签: c# silverlight unit-testing entity-framework wcf-ria-services