Насмешливый HttpPostedFileBase с насмешками Rhino - PullRequest
1 голос
/ 04 июня 2009

Я новичок в издевательстве, поэтому мне нужно немного советов о том, как смоделировать HttpPostedFileBase с помощью Rhino Mocks. Я пытаюсь проверить, что мое расширение ToByteArray () работает, как и ожидалось, и это то, что я до сих пор:

[Test]
    public void Should_return_a_byte_array_with_a_length_of_eleven()
    {
        // Arrange
        var stream = new MemoryStream(System.Text.Encoding.Default.GetBytes("TestContent"));
        var httpPostedFileBase = MockRepository.GenerateMock<HttpPostedFileBase>();

        httpPostedFileBase.Expect(x => x.InputStream).Return(stream);
        httpPostedFileBase.Expect(x => x.ContentLength).Return(11);

        // Act
        var byteArray = httpPostedFileBase.ToByteArray();

        // Assert
        Assert.That(byteArray.Length, Is.EqualTo(11));
    }

Я могу сказать, что значения установлены, но к тому времени, когда мой метод extension получает HttpPostedFileBase, он теряет все свои значения. Любая помощь будет высоко ценится.

/ Кристоффер

1 Ответ

2 голосов
/ 04 июня 2009

По возможности, вы должны избегать насмешек, чтобы убедиться, что ваша реализация соответствует вашим ожиданиям. Вместо этого отдайте предпочтение проверке того, что для какого-то конкретного ввода вывод соответствует ожидаемому.

Тем не менее, в вашем примере не хватает нескольких ключевых вещей. Когда вы используете mocks, вам нужно сообщить им, когда вы закончите настройку ожиданий (в противном случае они будут записывать все вызовы методов и т. Д., Например, дальнейшие ожидания), вызывая:

httpPostedFileBase.Replay();

И, наконец, на стадии утверждения, проверьте свои ожидания с помощью:

httpPostedFileBase.VerifyAllExpectations();

Также обратите внимание, что с Rhino вы можете имитировать только виртуальные методы и свойства.

...