これは、エンティティで動作し、それをデータベースに保存してから、単体テストを作成できないために問題を引き起こすサンプル関数です。見てみな:
// 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 にアクセスできないことを意味します。
モック データベースについて考えてきましたが、このクラスは実際には DB に追加するエンティティ (従業員) を作成します。モック データベースはこのエンティティを使用せず、元のエンティティに似た MockEntity クラスを使用するため、これは問題です。
RIA 自体をテストしようとしているのではなく、RIA によって生成されたエンティティをどのように使用するかをテストしようとしています。
私の最終目標は、次のような関数を作成することです。
[TestMethod]
public void Test()
{
EmployeeSaver s = new EmployeeSaver();
s.Go();
Assert.IsEqual( DataContext.Employees.Last().Name, "Jeremiah" );
}
この機能をテストするにはどうすればよいですか? どのテスト フレームワークを使用すればよいですか? Silverlight Testing Framework を使用するのは難しいですか?