在Capybara集成测试(和Selenium webdriver)期间设计用户创建失败

时间:2012-11-29 03:54:38

标签: ruby-on-rails ruby-on-rails-3 selenium devise capybara

我正在尝试在集成测试期间创建用户以用于某些操作。我正在使用设计:确认。代码如下:

user = User.create({username: "user1", password: "pass1234", password_confirmation: "pass1234", email: "test@email.com"})
user.confirm!
fill_in "Username", :with => user.username
fill_in "Password", :with => user.password
click_button "Sign in"

问题是每次尝试登录都会失败。用户创建没有错误,但出于某种原因,当我尝试登录时,用户似乎并不“在那里”。当我尝试登录时,我只是得到“无效的用户名或密码”。这似乎与Capybara / Selenium webdriver在尝试登录之前没有正确等待数据库操作的事实有关。如果是这种情况,我该如何测试或修复它?

在集成测试期间尝试插入数据库是否“错误”?

1 个答案:

答案 0 :(得分:1)

我自己不使用设计,所以不能真正评论你遇到的问题的具体细节,但这个问题引起了我的注意:

  

在集成测试期间尝试插入数据库是否“错误”?

是的,我会说它一般都是。

您的集成测试应该从用户的角度测试您的代码:

  • 期望应仅取决于用户实际可以查看
  • 操作应仅对应于用户实际执行的内容。

将某些内容插入数据库超出了用户可以使用的操作范围。它可能适用于单元测试,但不适用于集成测试。

话虽如此,您可能会认为种子数据库数据是此规则的一个例外,因为您正在为测试设置上下文(请参阅下面的评论)。