Вы также можете взглянуть на структуру Verde. Семантически тесты выглядят аналогично MvcIntegrationTestFramework Стива Сандерсона, с ключевым отличием в том, что Verde выполняет тесты в контексте вашего фактического домена приложений IIS (через браузерный тестовый прогон), а не программно созданным. Это дает пару преимуществ: во-первых, это более реалистичная эмуляция фактической конфигурации вашего приложения, топологии сети, настроек безопасности и т. Д. Во-вторых, вы можете автоматизировать запуск тестов в качестве шага после развертывания или даже запускать тесты автоматически, как часть мониторинга приложений в производстве. Вот пример теста Verde, взятого из примера MvcMusicStore, который включен в исходный код на GitHub:
[IntegrationTest]
public void Index_Load_ExpectedHtml()
{
// Get a product to load the details page for.
var album = storeDB.Albums
.Take(1)
.First();
using (var scope = new MvcExecutorScope("Store/Details/" + album.AlbumId))
{
Assert.AreEqual(200, scope.HttpContext.Response.StatusCode);
Assert.IsTrue(scope.Controller is StoreController);
Assert.AreEqual("Details", scope.Action);
var model = scope.Controller.ViewData.Model as Album;
Assert.IsNotNull(model);
Assert.AreEqual(album.AlbumId, model.AlbumId);
Assert.IsFalse(String.IsNullOrEmpty(scope.ResponseText));
// Load the ResponseText into an HtmlDocument
var html = new HtmlDocument();
html.LoadHtml(scope.ResponseText);
// Use ScrappySharp CSS selector to make assertions about the rendered HTML
Assert.AreEqual(album.Title, html.DocumentNode.CssSelect("#main h2").First().InnerText);
}
}
Существует пакет NuGet, который очень легко добавить в ваш проект MVC.