Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Ruby on rails 如何修复Desive密码重置流的片状水豚测试_Ruby On Rails_Ruby_Devise_Capybara_Minitest - Fatal编程技术网

Ruby on rails 如何修复Desive密码重置流的片状水豚测试

Ruby on rails 如何修复Desive密码重置流的片状水豚测试,ruby-on-rails,ruby,devise,capybara,minitest,Ruby On Rails,Ruby,Devise,Capybara,Minitest,我在Rails中进行了一个脆弱的系统测试,但似乎无法修复。每次这个测试开始失败时,我都会用等待时间方法给水豚的加上几秒钟,测试会通过一段时间。通常,这个测试是单独通过的,然后在我运行整个测试套件时失败。然后我增加了等待时间,当运行整个测试套件时,等待时间会过去一段时间,直到我在我的应用程序中更改了其他东西,无论出于何种原因,这些东西会破坏这个特定的测试 起初我想,好吧,我只需要等待浏览器,这是一个系统测试,但现在这个等待时间已经开始慢慢上升到一个荒谬的水平。(旁注:类似的事情也发生在一个系统测试

我在Rails中进行了一个脆弱的系统测试,但似乎无法修复。每次这个测试开始失败时,我都会用等待时间方法给水豚的
加上几秒钟,测试会通过一段时间。通常,这个测试是单独通过的,然后在我运行整个测试套件时失败。然后我增加了等待时间,当运行整个测试套件时,等待时间会过去一段时间,直到我在我的应用程序中更改了其他东西,无论出于何种原因,这些东西会破坏这个特定的测试

起初我想,好吧,我只需要等待浏览器,这是一个系统测试,但现在这个等待时间已经开始慢慢上升到一个荒谬的水平。(旁注:类似的事情也发生在一个系统测试中,即在搜索栏中输入搜索词并等待响应。)是否有更好的方法来测试这一点,或者告诉水豚等待浏览器是唯一的方法?我知道我可以信任Deviate,不需要对Deviate的密码重置邮件程序进行单元测试,但我想测试用户在密码重置过程中的流量

这是一个不可靠的测试:

require 'application_system_test_case'

class UserPasswordResetTest < ApplicationSystemTestCase
  def setup
    ActionMailer::Base.deliveries.clear
    @user = users(:george)
  end

  test "should allow you to request a password reset email" do
    visit login_path
    click_link "Forgot your password?"
    assert_current_path "/users/password/new"
    using_wait_time(30) do
      fill_in "user[email]", with: @user.email
    end
    click_button "Request password reset"
    using_wait_time(25) do
      assert_text "You will receive an email with instructions on how to reset your password in a few minutes."
    end
  end
end
要求“应用程序\系统\测试用例”
类UserPasswordResetTest
以下是我的测试助手:


有什么更好的方法来测试这个没有那么脆弱的密码重置流呢?

如果测试通过了长时间的等待,那么你需要查看测试日志,看看为什么你的控制器动作需要花费这么长时间才能呈现(水豚只是在等待这些东西出现在浏览器中,并且会尽快继续)。如果测试不能可靠地通过扩展等待,那么您需要提供返回错误的详细信息

还要注意的是,当您只调整单个呼叫的最大等待时间时,您不需要使用
using_wait_time
方法,您只需将
wait
传递给正在调用的方法即可

fill_in "user[email]", with: @user.email, wait: 30

谢谢从未考虑过跟踪我的测试日志()
tail-f log/development.log
。这将帮助我诊断问题。