使用Specflow访问带有特殊字符的属性.协助.Dynamic

本文关键字:属性 协助 Dynamic 特殊字符 Specflow 访问 使用 | 更新日期: 2023-09-27 18:18:58

我有一个Specflow表,它的列头带有特殊字符,如"CC $部分总数" &"美元价值(以C2C计)".

var content = table.CreateDynamicSet();

当我如上所述创建动态集时,它删除了上面列标题的空格。但是我无法访问它们属性

content.CC$PortionTotal

content.DollarValue(totalinC2C)

因为c#在看到$,(and)

这样的特殊字符时会出错

有人知道如何解决这个问题吗?

Tx

使用Specflow访问带有特殊字符的属性.协助.Dynamic

已更新在SpecFlow.Assist的1.1.0中修复了这个问题。动态的,它允许列标头中的任何字符。在属性中,这将被剥离。阅读这里的功能

Oooouch……是的,这将是一个问题,因为这些是c#中保留的字符。现在代码不能很好地处理这个问题,所以您只能重命名列(例如,写出"dollars"并去掉括号)。

请在GitHub提出一个问题,我会看看我能做些什么,但我担心我将不得不剥离保留的字符,使名称不太容易理解。但它不会坠毁在你身上,至少:)

很抱歉。

tx非常感谢您的快速回复,是的,如果我们能像空格一样去掉特殊字符,那就太好了。我认为,在步骤定义级别剥离它们是明智的(利益相关者不是在看那个,而是在看特征文件),因为我们想要的只是掌握属性值,以断言实际结果。

甚至我问我的团队是否有可能在我们的SBE会议上从特征文件中删除特殊字符,但他们认为这不是一个好主意,因为这会降低涉众使用的活文档的可读性。我计划遍历表头并去掉特殊字符,然后创建一个动态集。顺便说一下,我们会筹集一张门票,感谢您对这个动态库的贡献。它太棒了!

在Marcus解决这个问题之前,我们可以像下面这样处理

            foreach (var header in table.Header)
        {
            table.RenameColumn(header, Regex.Replace(header, "[^0-9a-zA-Z]+", String.Empty));
        }