MVC 3 と Entity Framework を使用して作成された Web アプリケーションがあります。単体テストの使用を開始したいのですが、これまでのところ、システムがデータベースと対話する方法が原因で、単体テストを実行できませんでした。
DataContext を変数として定義する BaseController があります。
public class BaseController : Controller
{
public Models.MyEntities DataContext = new Models.MyEntities();
次に、各コントローラーは BaseController を継承するため、DataContext 変数を再定義せずにすべてのコントローラーで使用できるようになります。
public class ErrorController : BaseController
{
単体テストを実行すると、DataContext にアクセスする行を参照するたびに、オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーが表示されます。
単体テストに関するほとんどの言及では、データベース層を抽象化し、テストに偽のデータを使用する必要があると言われています。これは私には直感に反するように思えますが、それは別の議論です。
私の質問は、システムをそのまま構成して単体テストを使用することは可能ですか? 私は、MSTest、NUnit / XUnit など、利用可能なテスト フレームワークを使用することにオープンです。