autotest and rspec giving different answers
我有一个正在使用rspec2(2.6.4),水豚和selenium进行测试的应用程序。
当我直接使用rspec运行任何请求规范时,测试就会通过。
当我通过自动测试运行请求规范时,它们全部失败,并显示一条消息"找不到ID = **的用户。
当自动测试自动重新加载第一个请求测试时,它通过
然后自动测试重新加载所有测试,当达到请求测试时,它们又全部失败
正在由factory-girl创建用户,并使用devise登录,如下所示:
1 2 3 4 5 6 7 8 | before(:each) do @user = Factory(:user) login_as @user end after(:each){ logout } |
在规范助手中,我有
1 2 3 | def login(user) post login_path, :login => user.login, :password => 'testing' end |
这些是我已安装的相关ruby(组:test)
1 2 3 4 5 6 7 | gem"rspec" gem"rspec-rails" gem "autotest-rails" gem"selenium-webdriver",">= 0.2.2" gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git' gem 'launchy' gem 'database_cleaner' |
这已经困扰了我一阵子-有人在想什么吗?甚至对如何开始查看堆栈跟踪以了解两个调用在何处有所不同的任何想法?
已解决。真正发生的事情仍然是一个谜,但是这里是问题的真相以及我如何解决的准确摘要。自动测试不是罪魁祸首-问题是批量运行所有测试。运行
那我们学到了什么?我认为这个问题(至少对我而言)最终是由于rspec挂钩的命名混乱引起的。我认为酒店的房间"套房"比酒店的"所有"房间都少。但是显然,rspec示例的"套件"比所有示例都重要。实际上,一组rspec示例只是" spec目录下的所有示例"。它们全部运行后清理看守无效。我们需要在每个规格后清理它们-为此,需要运行test_reset!在after(:all)块中。
希望这可以帮助某人...