我需要为 Web 应用程序中的用户角色创建一些测试。为了尽量减少描述,其中一项测试涉及检查是否为用户显示菜单条目。
对于这个测试,我使用了一个名为 UserRoles 的表,如下所示:
sUserName bDoesntHaveMenuX
User1 1
User2 0
User3 1
bDoesntHaveMenuX 是位类型。
我有一个派生自 ValidationRule 的类,它根据 XPath 表达式检查页面中是否存在特定文本,以定位要查找文本的节点。这个类的公共属性是:
string XPathExpression
string Text
bool FailIfFound
最后一个指示如果找到或未找到文本,规则是否应该失败。
在测试中,我为开头提到的表添加了一个数据源,称为 DS。对于我感兴趣的请求,我添加了我的验证规则类的新实例,具有以下值:
Text=MenuX
XPathExpression=//div[@id='menu']//td
FailIfFound={{DS.UserRoles.bDoesntHaveMenuX}}
不幸的是,这不起作用。原因似乎是数据绑定过程创建了一个上下文变量 DS.UserRoles.bDoesntHaveMenuX 的值为“False”或“True”。该值是一个字符串,因此绑定会导致转换错误。
据我所知,我的选择是:
- 更改验证规则以接受 FailIfFound 的字符串。不是一个有效的选项,原因有两个:它是一种黑客行为,并且在其他地方使用了相同的规则。
- 制定一个将使用上述规则的新验证规则,并将 FailIfFound 实现为字符串。我也不喜欢这个,原因和上面一样。这是一个黑客。
- 在将数据传递给验证规则之前,对测试进行编码并进行适当的转换。我不喜欢这个,因为我更喜欢只有在没有其他方法的情况下才将测试编码。
这让我想到了这个问题。还有其他方法吗?
谢谢你。