我正在学习Arquillian现在我想知道如何创建在路径中有占位符的页面 . 例如:
@Location("/posts/{id}")
public class BlogPostPage {
public String getContent() {
// ...
}
}
要么
@Location("/posts/{name}")
@Location("/specific-page?requiredParam={value}")
我一直在寻找graphine和arquillian参考指南的答案,但没有成功 . 我使用了支持页面对象的其他语言的库,但它对占位符有内置支持 .
2 回答
AFAIK在石墨烯中没有这样的实现 . 说实话,我不确定这应该如何表现 - 你会如何传递 Value ......?
除此之外,我认为它也可能受到Java注释能力的限制https://stackoverflow.com/a/10636320/6835063
目前在石墨烯中这是不可能的 . 我创建了ARQGRA-500 .
现在可以扩展石墨烯以添加动态参数 . 这是如何做 . (Arquillian 1.1.10.Final,Graphene 2.1.0.Final . )
创建一个界面 .
创建一个自定义LocationDecider来替换相应的Graphene . 我替换了HTTP . 如果它看到测试对象实现了我们的接口,那么Decider将向URI添加位置参数 .
我们的LocationDecider必须注册才能覆盖Graphene的 .
MyArquillianExtension应该通过SPI注册,因此在您的测试资源中创建一个必要的文件,例如:对我来说,文件路径是
src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
. 该文件必须包含MyArquillianExtension的完全限定类名 .就是这样 . 现在,您可以在测试中提供位置参数 .
我专注于参数,但希望这为其他动态路径操作铺平了道路 .
当然这不能解决
Graphene.goTo
API问题 . 这意味着在使用goTo之前,您必须通过此环形交叉路径提供参数提供参数 . 有点奇怪 . 您可以创建自己的替代API,goTo接受参数,并修改LocationDecider以支持其他ParameterProviders .