У меня есть серия тестов NUnit, и некоторые из них проваливаются, но я не могу найти причину, и исключение ничего не говорит мне. Это мой случай:
//Controller Action
[HttpPost]
[AjaxExceptionHandler]
[OutputCache(Duration = 0)]
public PartialViewResult SomeAction(long id)
{
try
{
var model = _repository.GetModel(id);
return PartialView(@"MyPartialView", model);
}
catch (Exception ex)
{
exceptionManager.HandleException(ex, FT_EXCEPTION_POLICY);
throw;
}
}
//Action Unit Test
[Test]
[Category(TestConstants.UnitTest)]
public void SomeAction_Returns_Expected_View()
{
var model = Builder<ViewModel>.CreateNew().Build();
repository.Stub(it => it.GetModel(Arg<long>.Is.Anything)).Return(model);
var viewResult = (PartialViewResult)someController.SomeAction(1);
Assert.AreEqual(@"MyPartialView", viewResult.ViewName);
}
Исключение модульного теста:
System.AccessViolationException: попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
Если в своем действии я передаю нулевое значение частичному представлению, например, так: return PartialView(@"MyPartialView", null);
Затем тест проходит.
Другие подобные случаи также терпят неудачу, а другие проходят. Я не смог определить причину для каждого.
Может кто-нибудь помочь мне определить, что не так?
Спасибо
РЕДАКТИРОВАТЬ: Хорошо, я исправил ВСЕ другие неудачные тесты, и теперь у меня есть только те, с System.AccessViolationException слева.
ДОБАВЛЕНО
Процедура настройки из моих тестов:
[SetUp]
public void SetUp()
{
controllerBuilder = new TestControllerBuilder();
repository = MockRepository.GenerateStub<ISomeRepository>();
someController = new SomeController
(repository);
controllerBuilder.InitializeController(someController);
}