Wicket TagTester没有提供属性

时间:2014-05-15 11:19:55

标签: java html unit-testing junit wicket

我有一个组件,它是表的数据视图,其标记看起来像这样:

<table>
    <thead>
    <tr>
        <td wicket:id="dateTime">Date/Time</td>
        <td wicket:id="direction">Direction</td>          
        <td wicket:id="ring">Ring</td>
        <td wicket:id="wait">Wait</td>
        <td wicket:id="talk">Talk</td>
        <td wicket:id="duration">Duration</td>
        <td wicket:id="answer">Answer</td>
    </tr>
    </thead>
    <tbody>
    <tr wicket:id="callList">
        <td wicket:id="dateTime">Date/Time</td>
        <td wicket:id="direction">Direction</td>
        <td wicket:id="ring">Ring</td>
        <td wicket:id="wait">Wait</td>
        <td wicket:id="talk">Talk</td>
        <td wicket:id="duration">Duration</td>
        <td wicket:id="answer">Answered</td>
    </tr>
    </tbody>
</table>

我通过控制可见性使一些列变量,因此渲染结果不会包含它们。我通过DataView而不是DataTable来做到这一点,因为这样可以更好地控制html文件中的html,而不是代码,这是我喜欢的方式。

当我尝试测试可见性时出现问题。我觉得获得每个组件并测试其可见性对于单元测试来说有点侵入性,并且想要简单地测试连续呈现的单元格数量,看它是否与我期望的数量匹配(开始时)。

我遇到了TagTester,这似乎是我尝试做的一个很好的解决方案。

但是,TagTester似乎通过属性及其值来识别标签,并且我的单元格中没有任何公共属性可用于识别它们。是否可以创建TagTester只知道标签是什么?或者我错误地认为我是如何考虑单元测试这样一个组件的?

1 个答案:

答案 0 :(得分:0)

TagTester有一个开放标记,一个关闭标记和一个解析器。因此,当您为示例创建TagTester时,您将拥有:打开标记 = <table>关闭标记 = </table>。目前TagTester允许您:

  1. hasChildTag(String tagName):用于按名称搜索标记
  2. getChild(String attribute, String value):获取属性等于值的第一个TagTester子项。
  3. 如果您希望在标记中添加Tag,可以在标记myTagTester.getMarkup()内搜索自己,并返回String