intellij-idea - Geb DSL 模块在 Intellij 中无法识别
问题描述
离开这里的文档是模块和其他 Geb DSL 预计不会在 IntelliJ 的 Spock 规范中被识别?这使得在没有 DSL 参考的情况下使用带有 IntelliJ 的 Geb 有点麻烦。我从这个问题中注意到,提问者做了一些自定义工作来让 IntelliJ 包装并注意到 Geb DSL。
我的问题是我做错了什么还是这是意料之中的,在让 IntelliJ 识别 Geb DSL 方面有任何进展吗?
如果没有,是否有人对此问题/限制和/或其他识别 Geb DSL 的 IDE 有解决方法?
解决方案
IntelliJ 支持 Geb DSL,我已经使用了很多年,甚至 IntelliJ 的代码库中的测试证实了它的存在。
如果您可以分享您的代码的外观以及哪些内容不适合您,那么我们可能会发现您的设置或期望存在问题。最好知道您使用的是社区版还是专业版。
请注意,您链接到的问题中讨论的问题已由我在此 PR中修复,并且自 IntelliJ 2018.2 以来不再存在。
编辑:
在阅读了您在我的回复下的评论后,我现在明白了问题所在。您的期望是 IntelliJ 将能够在运行时确定页面类型并为您提供自动完成功能。恐怕这根本不可能——您需要在代码中跟踪当前页面实例,以便 IntelliJ 能够推断类型。
请注意,geb-example-gradle中的测试以非常简洁但动态的风格编写,这意味着 IntelliJ 无法推断类型。您需要做的是使用文档中描述的强类型样式。文档的那部分可以做一些改进,因为它不精确 - 我创建了一个 Github 问题来跟踪它。
本质上,如果您将GebishOrgSpec从 geb-example-gradle 调整为:
class GebishOrgSpec extends GebSpec {
def "can get to the current Book of Geb"() {
when:
def homePage = to GebishOrgHomePage
and:
homePage.manualsMenu.open()
then:
homePage.manualsMenu.links[0].text().startsWith("current")
when:
homePage.manualsMenu.links[0].click()
then:
at TheBookOfGebPage
}
}
然后 IntelliJ 将为您提供自动完成功能。
推荐阅读
- android - ContentLoadingProgressBar 在隐藏前的最短时间未显示
- php - 如何使用 JQuery AJAX 发送图像和文本
- r - 指定要与 `install.packages` 一起使用的已安装依赖项的版本
- laravel - 加载模块脚本失败:服务器以“text/html”的非 JavaScript MIME 类型响应
- python - pygame 角色跳跃在学校项目中不起作用
- variables - PowerBI_variables_error 消息“无法将 Text 类型的值转换为 TRUE/FALSE 类型”
- javascript - 跨度悬停不起作用以及如何更改 div 之外元素的属性
- java - 在 Maven 项目中的包之间移动类时的常见问题
- laravel - Laravel:电子邮件未发送
- amazon-web-services - 已验证发送的域我如何验证它以在 AWS SES 中接收