Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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/2/jsf-2/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
Ruby on rails React和x2B的集成测试有哪些选项;网页包+;Rails API站点?_Ruby On Rails_Reactjs_Rest_Webpack_Integration Testing - Fatal编程技术网

Ruby on rails React和x2B的集成测试有哪些选项;网页包+;Rails API站点?

Ruby on rails React和x2B的集成测试有哪些选项;网页包+;Rails API站点?,ruby-on-rails,reactjs,rest,webpack,integration-testing,Ruby On Rails,Reactjs,Rest,Webpack,Integration Testing,考虑一个Rails仅用于API的站点。没有服务器端渲染 通过服务器端渲染,它或多或少地清晰了capybara启动puma,之后测试可以连接到puma页面 但是没有服务器端渲染,就没有puma请求页面。我该怎么做 请在投票时解释一下自己。看一看。您可以从rspec驱动您的客户机测试套件,并轻松地与rails集成。而现在服务器端渲染必须非常常见,我决定使用一个 将以下gem添加到gem文件中: gem'httparty',“~>0.16.2” gem'childprocess',“~>0.7.0”

考虑一个Rails仅用于API的站点。没有服务器端渲染

通过服务器端渲染,它或多或少地清晰了
capybara
启动
puma
,之后测试可以连接到
puma
页面

但是没有服务器端渲染,就没有
puma
请求页面。我该怎么做


请在投票时解释一下自己。

看一看。您可以从rspec驱动您的客户机测试套件,并轻松地与rails集成。

而现在服务器端渲染必须非常常见,我决定使用一个

将以下gem添加到
gem文件中

gem'httparty',“~>0.16.2”
gem'childprocess',“~>0.7.0”
将以下行从
config/environments/production.rb
移动到
config/application.rb
,以使
RAILS\u LOG\u to\u STDOUT
在测试环境中可用

if ENV['RAILS\u LOG\u TO\u STDOUT']是否存在?
config.logger=logger.new(标准输出)
结束
关于
webpack
,请确保将
publicPath
设置为
http://localhost:7777/
,并且在中未使用UglifyJsPlugin

并添加这两个文件:

test/application\u system\u test\u case.rb

#冻结的字符串文字:true
需要“uri”
需要“测试助手”
需要“前端服务器”
前端=ENV.fetch('FRONT\u END','separate\u process')
前端端口=7777
Capybara.server_port=7778
Capybara.run\u server=ENV.fetch('BACK\u END','separate\u process')=='separate\u thread'
需要“操作\调度/系统\测试\案例”\强制注册和设置服务器
Capybara.register_服务器:rails_puma do|应用程序、端口、主机|
Rack::Handler::Puma.run(应用程序,端口:端口,线程:“0:1”,
详细:环境键('BACK\u END\u LOG'))
结束
服务器=:rails\u puma
DatabaseCleaner.strategy=:截断
类ApplicationSystemTestCase'test'},
“./node_modules/.bin/webpack'、”--config、“-config/webpack/test.js'、“--hide modules')\
或中止
结束
如果前端=='分离\u进程'
front_srv=ChildProcess.build(
“bundle”、“exec”、“test/front-end server.rb”,
'-f',前端到端口,
'-b',Capybara.server_port.to_s
)
如果环境键?(“前端日志”)
前面的人,继承!
结束
前发动机起动
小型测试。运行后{
前挡块
}
其他的
新做的
FrontEndServer.new({
端口:前端端口,
后端端口:Capybara.server端口,
记录器:Rails.Logger,
}).开始
结束
结束
除非Capybara.run\u服务器
back\u srv=ChildProcess.build(
“bin/rails”、“服务器”,
“-P”、“tmp/pids/server test.pid”、#与开发实例不冲突
'-p',Capybara.server\u port.to\u s
)
倒车起动
#等待服务器启动
开始
socket=TCPSocket.new'localhost',Capybara.server\u端口
救援错误号::ECONREFUNCED
重试
结束
闭嘴
小型测试。运行后{
倒车档
}
结束
测试/前端服务器.rb

#/usr/bin/env ruby
需要“webrick”
需要“httparty”
需要“uri”
类FrontEndServer{k}:{v}”);
结束
@debug(“->body:#{req.body}”);
uri2=req.request\u uri.dup
uri2.port=@config[:back\u end\u port]
res2=HTTParty.send(req.request\u method.downcase,uri2{
headers:Hash[req.header.map{| k,v |[k,v.join(',')]},
body:req.body,
})
res.content\u type=res2.headers['content-type']
res.body=res2.body
res2.headers.each do | k,v|

@debug(“嗯,我找不到关于它在站点上如何工作的解释。(很抱歉在这里直截了当。)我可能错了,但它让我想起了ASP.NET。在任何情况下,乍一看,它似乎比它的价值更麻烦。泄漏的抽象,等等。可能是针对不喜欢Javascript的人。如果我错了,请纠正我。而不是我问的。我关心的是测试前端,它与后端是分开的(无服务器端渲染)。
$ xvfb-run TESTOPTS=-h bin/rails test:system
$ xvfb-run bin/rails test -h test/system/application_test.rb:6
$ xvfb-run TEST=test/system/application_test.rb TESTOPTS=-h bin/rake test
"scripts": {
  "test": "xvfb-run bin/rails test:system",
  "test1": "xvfb-run bin/rails test"
}
$ yarn test
$ yarn test1 test/system/application_test.rb:6
"scripts": {
  "test": "./fix-path.sh xvfb-run bin/rails test:system",
  "test1": "./fix-path.sh xvfb-run bin/rails test"
}