R#插件测试:如何在名称中使用括号指定上下文操作

时间:2016-09-06 16:36:22

标签: unit-testing resharper resharper-plugins

我创建了一个复合上下文操作,它使用以下文本返回一些意图:

  • [Tag]行动
  • 第二次行动

现在我试图通过测试来覆盖这个动作。我按照指南做了所有事情,但我无法使用caret符号识别第一个操作。

我尝试过以下选项:

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

他们的工作注意事项:(

如果我对Second Action做同样的事情,一切都很好。可能,问题与括号有关。

我不想更改操作的名称。你能建议如何用括号指定动作吗?

谢谢!

更新

我找到了以下解决方法:

  1. 在数据文件中指定操作的别名:{caret:TagAction}
  2. 覆盖SelectItem方法并调整属性

    protected override IBulbAction SelectItem(SetFrozenAttributeAction contextAction, string attribute, ITextControl textControl)
    {
      if (attribute == "TagAction") attribute = "[Tag] Action";
      return base.SelectItem(contextAction, attribute, textControl);
    }
    
  3. 如果你知道更好的方式 - 建议:)

1 个答案:

答案 0 :(得分:1)

是的,它是括号。我不知道为什么,但是当它遇到左大括号{时,它并没有读到一个右大括号},而是读取它认为是的一组字符。 "有效",然后在遇到第一个无效的char时停止。有效字符为char.IsLetterchar.IsDigit$(), -./\。但不是[] - 所以您的{caret:[Tag] Action}只会阅读{caret:然后停止。

您的解决方法似乎是最好的选择!