Поблочное тестирование мой метод контроллера приводит к пустому ViewName?

AnyNumber = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
for index, list_AnyNumber in enumerate(AnyNumber):
    if index > 0:
        print(int(AnyNumber[index].text) > int(AnyNumber[index-1],text))

Или вы можете изменить цикл foreach на for in range()

27
задан Antoine Meltzheim 2 January 2016 в 19:49
поделиться

2 ответа

ViewName только присутствует при установке его в ViewResult. Если бы Ваше имя Представления соответствует Вашему названию контроллера, то я проверил бы, чтобы гарантировать, что ViewName является пустым или пустым, поскольку это было бы (IMO) корректным поведением, так как Вы не захотите определять имя на представлении. Я только проверяю, что ViewName установлен, когда я предназначаю, чтобы Представление, которое будет возвращено, не соответствовало действию - говорят, при возврате представления "Error", например.

Править: Следующее является источником для ExecuteResult в ViewResultBase.cs (от RC1, у меня нет источника для RTW на моем Macintosh). Поскольку Вы видите, что это проверяет, чтобы видеть, был ли ViewName установлен непосредственно, и в противном случае это вытягивает его от действия в данных маршрутов контекста контроллера. Это только происходит в ExecuteResult, который вызывается AFTER, который завершило действие Вашего контроллера.

    public override void ExecuteResult(ControllerContext context) {
        if (context == null) {
            throw new ArgumentNullException("context");
        }
        if (String.IsNullOrEmpty(ViewName)) {
            ViewName = context.RouteData.GetRequiredString("action");
        }

        ViewEngineResult result = null;

        if (View == null) {
            result = FindView(context);
            View = result.View;
        }

        ViewContext viewContext = new ViewContext(context, View, ViewData, TempData);
        View.Render(viewContext, context.HttpContext.Response.Output);

        if (result != null) {
            result.ViewEngine.ReleaseView(context, View);
        }
    }
28
ответ дан tvanfosson 28 November 2019 в 05:42
поделиться

The viewname is set automatically by the framework. But when we unit test, we short-circuit the framework and there is nothing left to set the name.

So our actions need to set the viewname explicitly when we unit test. We could also check for null or empty if we really, really want to lean on the convention.

0
ответ дан 28 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

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