如何对自定义 Wicket 组件进行单元测试
Posted
技术标签:
【中文标题】如何对自定义 Wicket 组件进行单元测试【英文标题】:How to unit test a custom Wicket component 【发布时间】:2011-10-02 20:27:37 【问题描述】:鉴于这个非常简单的 Wicket 组件:
public class ProductImage extends WebComponent
public ProductImage(String id, Product p)
super(id, new Model(p));
add(new AttributeModifier("src", true, new Model(p.getImage())));
如何使用 WicketTester 对其进行单元测试?我需要一个页面吗?
【问题讨论】:
【参考方案1】:在 Wicket 1.5 中,#startComponentInPage(Component) 将为您创建一个页面,以便您可以测试任何类型的组件。
【讨论】:
那太好了...太糟糕了,我被 1.4 卡住了一段时间!不过还是谢谢啦!【参考方案2】:我实际上并没有这样做(我只有tested panels),但startComponent()
似乎是这样做的方法。
类似这样的:
Product product = new Product(/* initialize product here */);
ProductImage pi = new ProductImage("image", product);
tester.startComponent(pi);
tester.assertContains(Pattern.quote(product.getImage()));
【讨论】:
嗯,快到了!真的startComponent
似乎是这样,但我无法测试“src”属性是否正确。
@Eduardo 不明确,但您可以像这样测试:tester.assertContains("src\\s*=\\s*\"" + Pattern.quote(product.getImage()) + "\"");
这就是我的想法,但是您的第一个示例失败了:( 挖掘 Wicket 的源代码,我发现 assertContains 在 tester.getServletResponse().getDocument() 上有效,并且在 startComponent 之后为空!
@Eduardo 那么我想你毕竟需要一个面板。
:( 这么简单的事情有很多麻烦以上是关于如何对自定义 Wicket 组件进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章