本地 RSpec/Capybara/Poltergeist 测试全部通过,但在 TeamCity CI 服务器上随机测试失败。

5
我有一堆rspec测试,其中大约30个是通过capybara/poltergeist进行无头测试。每次在本地运行测试时,所有100%的测试都通过。
最近我设置了一个TeamCity持续集成服务器,测试结果非常不一致。
我连续运行了10次测试,在测试之间没有做任何更改。只有1轮测试通过了100%。其他轮次有1-2个失败(大部分不同),都与无头浏览器测试有关。以下是其中一个失败的示例:
ActionView::Template::Error: Couldn't find Spree::Address with id=1072978592

Stack trace:
./app/models/spree/order_decorator.rb:50:in `initialize_default_address'
./app/models/spree/order_decorator.rb:42:in `initialize_shipment'
./app/views/layouts/core.html.erb:23:in `_8cb98e121af585621c1d08e3ec1f6022'
./app/views/layouts/default.html.erb:14:in `_588b3208edc213a939dffd2ad73f4f26'

这个错误很奇怪,因为我已经对查找具有ID并返回FactoryGirl模型的函数进行了存根处理。但是,我在本地没有遇到这个问题。
以下是另一个测试运行中的错误:
Capybara::ExpectationNotMet: expected to find link "10" but there were no matches

Stack trace:
./spec/features/simply_ship_spec.rb:102:in `block (2 levels) in <top (required)>'

再次强调,当我在本地运行时,不会出现此错误,而且当我切换到selenium并观察测试时,链接明显存在。

这些错误(不是全部,但有几个例子)都是在不对项目进行任何更新的情况下单独发生的。有人有任何想法为什么会发生这种情况吗?

rspec-rails 2.14.0 capybara 2.1 poltergeist 1.3.0 rails 3.2.14 ruby 1.9.3 p448

3个回答

3

2

2

如果没有看到您的代码,很难说,但听起来您的代码可能存在竞态条件。如果您的脚本运行速度比应用程序代码快,那么就会偶尔出现此类故障。

您可以查看这些故障发生的位置,并确保应用程序在继续之前被赶上了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接