我正在尝试进行我的第一次水豚测试。我遵循 Ryan Bate 的理念并将一些功能测试放入我的控制器规范文件中。
describe UsersController do
render_views
it "can get the home page" do
get 'home'
response.body.should include("Login")
end
it "should log in" do
get 'home'
puts response.body
click_link('Login')
response.body.should include("Email")
response.body.should include("Password")
end
end
在它应该登录时我遇到了问题,所以开始尝试确保我可以找到并单击链接。没运气。在上面的测试中,我只是想确保链接存在
产生以下puts response.body
输出
...
<div id="user_nav">
<a href="/users/sign_up">Register</a> or <a href="/users/sign_in" id="Login">Login</a>
</div>
...
而且我还在实际页面上看到了该元素。似乎只有我的测试找不到它。第一个测试确实通过了。
1) UsersController should log in
Failure/Error: click_link('Login')
Capybara::ElementNotFound:
no link with title, id or text 'Login' found
# (eval):2:in `click_link'
# ./spec/controllers/users_controller_spec.rb:14:in `block (2 levels) in <top (required)>'
我正在使用 Rails 3.2、Rpsec 2.11 和 Capybara 1.1.2。
(我已经检查了有关 stackoverflow 的其他问题以及一些教程和截屏视频。我看不出它找不到给定 id 标签的元素的任何原因,但我可能遗漏了一些明显的东西。