Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 在cucumber中运行步骤代码时阻止web请求_Ruby On Rails_Ruby_Cucumber_Webrick - Fatal编程技术网

Ruby on rails 在cucumber中运行步骤代码时阻止web请求

Ruby on rails 在cucumber中运行步骤代码时阻止web请求,ruby-on-rails,ruby,cucumber,webrick,Ruby On Rails,Ruby,Cucumber,Webrick,我正在使用Cucumber+Selenium测试一些Rails代码。在这种配置中,我有时会遇到一个问题,即在请求页面的第一步完成,第二步正在运行之后,浏览器中会加载一些额外的资源/延迟请求 不幸的是,代码不是线程安全的,额外的请求和下一步不能同时运行 在功能/步骤代码的特定部分完成之前,是否有任何方法锁定webrick不接受任何请求?cucumber或webrick是否公开了任何相关的同步?您可以做的一件事是让第一个请求从额外资源中查找某些内容,以便在加载之前不会完成。如果你使用水豚,你会发现它

我正在使用Cucumber+Selenium测试一些Rails代码。在这种配置中,我有时会遇到一个问题,即在请求页面的第一步完成,第二步正在运行之后,浏览器中会加载一些额外的资源/延迟请求

不幸的是,代码不是线程安全的,额外的请求和下一步不能同时运行


在功能/步骤代码的特定部分完成之前,是否有任何方法锁定webrick不接受任何请求?cucumber或webrick是否公开了任何相关的同步?

您可以做的一件事是让第一个请求从额外资源中查找某些内容,以便在加载之前不会完成。如果你使用水豚,你会发现它非常擅长这样做


您可以做的另一件事是使用机架驱动程序,因为这不会加载您用来加载额外资源的javascript。如果您不需要额外的测试资源,为什么要加载它们:

我需要一些更通用的东西。我想要一些可重复使用的步骤来说明您无法处理任何请求,为什么要运行它,无论它在哪里使用。这不能依赖于特定的资源我不确定你所说的机架驱动程序是什么意思?你能扩展一下吗?使用rails Cucking的默认堆栈是Cucumber、Capybara和Rack。Rack在使用ruby和ruby框架(如Rails)的Web服务器之间提供了一个最小的接口。水豚在你的酒杯和你的浏览器之间扮演着中间人的角色。您可以将Capybara配置为使用rack、selenium或许多其他驱动程序与Web服务器通信。Rack是直接与Web服务器对话的最简单、最快的语言,但不支持javascript。Selenium的速度要慢得多,支持javascript,可以使用真实浏览器或无头浏览器。