Свойство ViewBag всегда возвращает нуль в модульном тесте - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь проверить, что данные ViewBag заполняются с моего контроллера, но в моих модульных тестах мое свойство возвращает значение NULL независимо от того, что я установил.

controller:

    public ActionResult Index()
    {
        _logger.LogEvent(LogLevel.Trace, null, $"Landing page requested", null);
        ViewBag.InstrumentationKey = _instrumentationKey;
        return View("Index");
    }

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

    [TestMethod]
    public void TestIndexHasApplicationInsightsKey()
    {
        // Arrange            
        var mock = new Mock<ILogging>();
        mock.Setup(logging => logging.LogEvent(It.IsAny<LogLevel>(), It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<object[]>())).Verifiable();
        HomeController controller = new HomeController(mock.Object);

        // Act
        ViewResult result = controller.Index() as ViewResult;

        // Assert
        Assert.AreNotEqual(null, result.ViewBag.InstrumentationKey as string);
    }

результат:

Assert.AreNotEqual не удалось.Ожидается любое значение, кроме: <(null)>.Фактический: <(нуль)>.

Я прочитал несколько ответов, в которых говорилось, что я должен получить доступ к своему представлению свойства ViewData ["InstrumentationKey"], но это также всегда возвращает ноль.

Любая идея, что я делаю неправильночто не позволило бы мне проверить значение свойств ViewBag?

1 Ответ

0 голосов
/ 25 августа 2018

В демонстрационных целях было протестировано следующее

[TestClass]
public class MyViewBagTestClass {
    [TestMethod]
    public void TestIndexHasApplicationInsightsKey() {
        // Arrange            
        HomeController controller = new HomeController();

        // Act
        ViewResult result = controller.Index() as ViewResult;

        // Assert
        Assert.AreNotEqual(null,result.ViewBag.InstrumentationKey as string);
    }
}

public class HomeController : Controller {
    public ActionResult Index() {
        ViewBag.InstrumentationKey = "Hello world";
        return View("Index");
    }
}

, чтобы доказать, что он действительно работает при тестировании. Что он и делает, когда проходит тестирование.

Это заставит меня поверить, что _instrumentationKey в вашем тестируемом методе на самом деле null, когда тест проводится.

Я предлагаю вам проверить, когда эта переменная заполнена, убедившись, что значение присваивается во время использования тестируемого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...