が、私は私のコントローラをテストしてみてください失敗ここでASP.NET MVCコントローラユニットテストは
[TestMethod]
public void Index()
{
AdminController controller = new AdminController();
ViewResult result = controller.Index() as ViewResult;
Assert.IsNotNull(result);
}
ですIndex()
コード:
public ActionResult Index()
{
var repository = new PostsRepository();
var posts = repository.GetAllPosts();
return View(posts);
}
リポジトリ:
public class PostsRepository : IPostsRepository
{
PostsDataContext _dataContext = new PostsDataContext();
public IQueryable<Post> GetAllPosts()
{
var posts = from t in _dataContext.Posts select t;
return posts;
}
public Post GetPostById(int id)
{
var post = from t in _dataContext.Posts
where t.id == id
select t;
return post.First();
}
}
しかし、私のIndex()
のユニットテストエラーで失敗します。
Test method MvcBlog.Tests.Controllers.AdminControllerTest.Index threw exception:
System.NullReferenceException: Object reference not set to an instance of an object.
スタックトレース:
MvcBlog.Models.PostsDataContext..ctor() in C:\Users\cL1Nk3r\Documents\Visual Studio 2010\Projects\MvcBlog\MvcBlog\Models\Posts.designer.cs: line 38
MvcBlog.Repository.PostsRepository..ctor() in C:\Users\cL1Nk3r\Documents\Visual Studio 2010\Projects\MvcBlog\MvcBlog\Repository\PostsRepository.cs: line 11
MvcBlog.Controllers.AdminController.Index() in C:\Users\cL1Nk3r\Documents\Visual Studio 2010\Projects\MvcBlog\MvcBlog\Controllers\AdminController.cs: line 19
MvcBlog.Tests.Controllers.AdminControllerTest.Index() in C:\Users\cL1Nk3r\Documents\Visual Studio 2010\Projects\MvcBlog\MvcBlog.Tests\Controllers\AdminControllerTest.cs: line 19
、それは誤りであるのはなぜ?
私はちょうど私のアプリケーションを実行すると、それが正常に動作します。
ソースコードのダウンロード:
var repository = new PostsRepository();
ここ
あなたがユニットには非常に困難にリポジトリの特定の実装にあなたのコントローラを抱き合わせされていますhttp://dl.dropbox.com/u/14053604/MvcBlog.rar
ソースコードを共有できますか?なぜDataContextが例外をスローするのか分かりません。ここで – Restuta
:http://dl.dropbox.com/u/14053604/MvcBlog.rar – Sergey