ASP.NET MVC 2, NUnit, Moq 및 MVC Contrib를 사용하고 있습니다. 나는 처음으로 단원 시험을 썼고,이 시험과 관련하여 몇 가지 질문이 있습니다. 내 시나리오는 인덱스보기입니다. 이보기에는 모든 뉴스 항목을 표시하는 표가 있습니다. 시험 방법과NUnit 및 MVC로 첫 번째 테스트에서 포인터 필요
public interface INewsRepository
{
IEnumerable<News> FindAll();
}
내 테스트 클래스 : 여기
내 INewsRepository 클래스입니다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라는 컨트롤러에 대한 변수 이름이 있습니다. 왜 이것을 이걸라고 부릅니까? –
테스트 중 제목. 이렇게하면 테스트 할 유형이 무엇인지 명확하게 알 수 있습니다. –
컨트롤러를 테스트 할 때 댓글을 달 수있는 다른 것이 있습니까? 내가 한 시험에서 많이하고있는 건가? 너무 적습니까? 컨트롤러를 테스트 할 때 어떤 지침을 줄 수 있습니까? –