Как дразнить Запрос. Файлы [] в классе модульного теста MVC?

Я хочу протестировать метод контроллера в модульном тесте MVC. Чтобы мой метод контроллера протестировал, я требую Запроса. Файлы [] набор с длиной один. Я хочу дразнить Запрос. Файлы [], поскольку я использовал управление загрузкой файла на своем представлении, представленном методом контроллера. Кто-либо может предложить, как я могу дразнить request.file набор в своем модульном тесте.

спасибо, kapil

6
задан Jaqen H'ghar 23 April 2010 в 10:16
поделиться

2 ответа

Вы не упомянули, какой фреймворк вы используете но вот как это сделать с помощью Rhino Mocks:

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(Request.Files.Count);
    }
}

Модульный тест:

[TestMethod]
public void SomeTest()
{
    // arrange
    var controller = new HomeController();
    var context = MockRepository.GenerateStub<HttpContextBase>();
    var request = MockRepository.GenerateStub<HttpRequestBase>();
    var files = MockRepository.GenerateStub<HttpFileCollectionBase>();
    context.Stub(x => x.Request).Return(request);
    files.Stub(x => x.Count).Return(5);
    request.Stub(x => x.Files).Return(files);
    controller.ControllerContext = new ControllerContext(context, new RouteData(), controller);


    // act
    var actual = controller.Index();

    // assert
    Assert.IsInstanceOfType(actual, typeof(ViewResult));
    var viewResult = actual as ViewResult;
    Assert.IsInstanceOfType(viewResult.ViewData.Model, typeof(int));
    Assert.AreEqual(5, viewResult.ViewData.Model);
}

Примечание: с помощью MVCContrib.TestHelper этот тест можно было бы значительно упростить, особенно часть насмешек контекста и также утверждает:

[TestMethod]
public void SomeTest()
{
    // arrange
    var sut = new HomeController();
    InitializeController(sut);
    Files["test.txt"] = MockRepository.GenerateStub<HttpPostedFileBase>();

    // act
    var actual = sut.Index();

    // assert
    actual
        .AssertViewRendered()
        .WithViewData<int>()
        .ShouldBe(1);
}
10
ответ дан 8 December 2019 в 15:59
поделиться
5
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: