2016-09-06 2 views
0

Я создал композитное действие контекста, который возвращает пару намерений со следующими текстами:R тест # Plugin: Как определить контекст действие с кронштейном имени

  • [Тег] Действие
  • Второго действием

Теперь я пытаюсь покрыть это действие испытаниями. Я сделал все по правилам, но я не могу идентифицировать первое действие, используя нотацию caret.

Я попытался следующие варианты:

  • {caret:[Tag]:Action}
  • {caret:Tag:Action}

Примечание они работали :(

Если я сделать то же самое для Second Action, все штраф. Вероятно, выпуск относится к скобкам.

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

Спасибо!

UPDATE

Я нашел следующий обходной путь:

  1. В файле данных указать псевдоним для действий: {caret:TagAction}.
  2. Override SelectItem метод и настроить атрибут

    protected override IBulbAction SelectItem(SetFrozenAttributeAction contextAction, string attribute, ITextControl textControl) 
    { 
        if (attribute == "TagAction") attribute = "[Tag] Action"; 
        return base.SelectItem(contextAction, attribute, textControl); 
    } 
    

Если вы знаете, лучший способ - предложить это :)

ответ

1

Да, это скобки. Я не знаю почему, но когда он сталкивается с открывающей скобкой {, он не читает до закрывающей скобки }, но читает набор символов, которые он считает «действительными», а затем останавливается, когда он попадает в первый недействительный символ. Допустимые символы являются char.IsLetter, char.IsDigit и $, (, ), ,-, ., /, \. Но не [ или ] - так ваш {caret:[Tag] Action} просто прочитал бы {caret:, а затем остановился.

Ваше обходное решение кажется лучшим вариантом!

Смежные вопросы