如何在ruby / rspec中卸载'require'?

时间:2012-03-22 23:58:03

标签: ruby rspec watir watir-webdriver safariwatir

我们目前正在运行rspec测试,检查要加载的特定库/模型。具体来说,我们要测试在创建对象时,我们得到正确的Watir对象:Watir ::用于FF和Chrome的浏览器,以及用于Safari的Watir :: Safari。

我们已经尝试过这样做:Unload a ruby class但它只删除常量,这不是我们想要的。

通常情况下,这不是问题,但由于safariwatir和watir-webdriver的兼容性问题,情况并非如此。它出错了:

superclass mismatch for class UnknownObjectException

要“修复”这个,我们基本上必须选择加载哪个webdriver(因此原始逻辑 - 我们计划测试)

有没有办法解决这个问题?我们的测试通过,而不仅仅是在整体运行时。所以我们基本上不得不跳过一个步骤来规避需求问题。

3 个答案:

答案 0 :(得分:2)

New Anser:NEWS FLASH webdriver现在支持Safari! ditch safariwatir并使用webdriver完成所有操作。我今天刚刚在Test Automation Bazaar上发现了这一点,所以没有太多细节。我希望在接下来的一周内,Watir社区可以看到一些关于这个的博客帖子。会议。

更新:现在详细了解watir-webdriver blog关于如何使用Safari

的功能

答案 1 :(得分:0)

Ruby中的类是对象,但是将类作为“每执行一个/对象空间”的想法只存在,因为Ruby类对象被指定为常量。

由于您的类使用影院模块命名,因此您可以动态检查对象的类型。如果这还不够,你可以鸭型。由于您提到了兼容性问题,因此存在一种方法,这些方法不适用于另一种方法(您可以测试)或者有方法为每种方法返回不同的值(您可以测试它们)。

答案 2 :(得分:0)

当我需要'watir'gem时,我通过使用条件逻辑处理了类似的事情,因此根据环境的配置,最终只需要一个版本。我可以在以后提供更多详细信息,也许是在自动化测试自动化市场结束之后,我有一点时间思考并为您挖掘出一些代码示例。