CI测试失败:“Capybara :: ElementNotFound:无法找到css”

时间:2012-07-20 19:54:06

标签: ruby-on-rails unit-testing continuous-integration capybara

我在持续集成服务器中运行了一系列单元和集成测试(我使用TeamCity),我试图知道为什么我的集成测试失败了。

我读了这个测试的堆栈跟踪,我发现了以下内容:

Capybara::ElementNotFound: Unable to find css "section.product[data-id=\"484802314\"]"

Stack trace:
test/integration/main_page_test.rb:7:in `pod'
    test/integration/main_page_test.rb:99:in `block in <class:MainPageTest>'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:44:in `block in run'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:89:in `with_listener'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:39:in `run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:378:in `block in run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:434:in `change_work_directory'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:377:in `run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:58:in `run'

开发人员声称此集成测试在他们的计算机上运行完美,那么,我该如何覆盖此问题?

更新:

另一个失败的测试是这个,我不确定是否相关或导致其他测试失败:

MainPageTest.test_Pod_are_created_correctly:

Wrong number of product pods generated.
<false> is not true.

Stack trace:
test/integration/main_page_test.rb:63:in `block in <class:MainPageTest>'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:44:in `block in run'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:89:in `with_listener'
    test-unit (2.5.0) lib/test/unit/ui/testrunnermediator.rb:39:in `run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:378:in `block in run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:434:in `change_work_directory'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:377:in `run'
    test-unit (2.5.0) lib/test/unit/autorunner.rb:58:in `run'

2 个答案:

答案 0 :(得分:0)

没有足够的信息来解决这个问题。我可以做出一堆疯狂的猜测,但它们不是很有用。您确定开发人员的计算机和CI上的环境是相同的(Ruby,Gems,依赖项的版本)吗?你如何在CI上运行测试?

答案 1 :(得分:0)

您的问题似乎可能位于您的

MainPageTest.test_Pod_are_created_correctly

测试 - 如果没有正确填充数据库,那么原始问题就会引起,因为选择器“484802314”的外观是数据库中行的ID。

然而,就像@Stefan Kanev在他的回答中提到的那样,没有提供足够的信息来提供准确的答案。