4

我们目前正在运行 rspec 测试来检查要加载的特定库/模型。具体来说,我们想测试在创建对象时,我们会返回正确的 Watir 对象:Watir::Browser 用于 FF 和 Chrome,Watir::Safari 用于 Safari。

我们已经尝试过这样做:卸载一个 ruby​​ 类,但它只是删除了常量,这不是我们想要的。

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

superclass mismatch for class UnknownObjectException

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

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

4

3 回答 3

2

新 Anser:NEWS FLASH webdriver 现在支持 Safari!抛弃 safariwatir 并使用 webdriver 完成所有操作。我今天刚刚在测试自动化集市上发现了这一点,所以没有太多的细节。我希望在下周左右看到来自 Watir 社区的一些博客文章,一旦人们从中恢复过来此次会议。

更新:关于如何使事情与 Safari 一起工作的详细信息现在在watir-webdriver 博客上

于 2012-03-24T06:51:44.877 回答
0

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

于 2012-03-23T04:00:02.110 回答
0

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

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

于 2012-03-23T03:27:25.717 回答