1
我正在使用ASP.NET MVC 2,NUnit,Moq和MVC Contrib。我曾經寫過我的第一個單元測試,並且有幾個關於這個測試的問題。我的場景是我有一個索引視圖。在這個視圖中,我有一個顯示所有新聞項目的網格。指針需要在NUnit和MVC第一次測試Contrib
這裏是我INewsRepository類:
public interface INewsRepository
{
IEnumerable<News> FindAll();
}
我的測試類與測試方法:
public class NewsControllerTest :TestControllerBuilder
{
private Mock<INewsRepository> mockNewsRepository;
private NewsController newsController;
[SetUp]
public void Init()
{
mockNewsRepository = new Mock<INewsRepository>();
newsController = new NewsController(mockNewsRepository.Object);
InitializeController(newsController);
}
[Test]
public void NewsController_Index()
{
// Arrange
var news = new Mock<IEnumerable<News>>();
mockNewsRepository.Setup(r => r.FindAll()).Returns(news.Object).Verifiable();
// Act
ActionResult actual = newsController.Index();
// Assert
mockNewsRepository.Verify();
actual
.AssertViewRendered()
.ForView("Index")
.WithViewData<News[]>()
.ShouldBe(news);
}
}
我的觀點:
public ActionResult Index()
{
FakeNewsRepository fakeNewsRepository = new FakeNewsRepository();
IEnumerable<News> news = fakeNewsRepository.FindAll();
return View(news);
}
我需要在路上一些指針是我做的。我的方向是否正確?我應該補充什麼,我應該留下什麼?我想做單元測試,我將它與集成測試混合在一起嗎?任何額外的建議,將不勝感激。
當我運行這個測試在NUnit的GUI控制檯,然後我得到一個錯誤回來,I'mnot知道這意味着什麼:
MyProject.Web.Tests.Controllers.NewsControllerTest.NewsController_Index:
Moq.MockVerificationException : The following setups were not matched:
INewsRepository r => r.FindAll()
在你的代碼中,你有一個名爲_sut的控制器的變量名。你爲什麼這麼稱呼它? – 2010-12-04 13:19:12