GEB中的Navigator.find函数会删除谓词。这是好习惯吗?

时间:2014-09-20 06:01:17

标签: geb

以下让我感到惊讶! 以下语句中的谓词将被删除

String selector = 'ul'
Map predicates = [class: 'catalog']

navigator.find predicates, selector

我发现以下有关此行为的评论:

/**
 * Optimizes the selector if the predicates contains `class` or `id` keys that map to strings. Note this method has
 * a side-effect in that it _removes_ those keys from the predicates map.
 */

我的问题。改变作为参数的数据中的某些东西是否真的是良好礼仪的规则?

我记得来自C ++的这种情况但是在java世界中,完整性的优先级高于以功能调用者为代价优化代码!

我在程序中遇到了这种行为,花了很多时间弄清楚为什么我的定义结构在执行过程中会发生变化。内存泄漏的想法已经到来。

1 个答案:

答案 0 :(得分:1)

这确实是一种不好的做法,不应该这样做。我从未想过有人可能会重复使用传递给Navigator.find()的谓词映射,但您的用例完全有效。

请在Geb's issue tracker中为此创建一张票。