Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RSpec:before(:all)和before(:each)之间的深度差异_Rspec - Fatal编程技术网

RSpec:before(:all)和before(:each)之间的深度差异

RSpec:before(:all)和before(:each)之间的深度差异,rspec,Rspec,好的,我遇到了一个非常奇怪的问题,直接与before块有关。我正在通过Watir和RSpec进行集成测试。为了检查用户是否可以执行登录的简单测试,我正在通过factory_girl在db中创建一个“用户”记录 所以我写了以下代码: before(:each) do @user = Factory(:user) end if "should perform a login" do # do stuff end 在do stuff中,我调用浏览器,查看用户如何尝试登录。不幸的是,不知何故

好的,我遇到了一个非常奇怪的问题,直接与before块有关。我正在通过Watir和RSpec进行集成测试。为了检查用户是否可以执行登录的简单测试,我正在通过factory_girl在db中创建一个“用户”记录

所以我写了以下代码:

before(:each) do
  @user = Factory(:user)
end

if "should perform a login" do
  # do stuff
end
do stuff
中,我调用浏览器,查看用户如何尝试登录。不幸的是,不知何故,他无法做到这一点——“用户名无效”


经过一些调查,我发现如果我把创建用户的代码放在(:all)块之前,一切都会神奇地运行。怎么样?在此上下文中,
:all
:each
之间有什么区别?另外,如果我将用于创建用户的代码实际放在测试主体中,它仍然不起作用(即,用户没有以某种方式添加到数据库或其他东西)。

您可能启用了事务装置,因此您的Watir进程在每个RSpec示例所包装的事务中看不到数据库更改

尝试禁用事务性功能,并在每个示例之前使用类似于“获得一张干净的名单”的方法