问题标签 [rack-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
569 浏览

ruby - 在 Sinatra 中使用二进制数据模拟发布请求

我的 Sinatra 应用程序中有一个端点,它将接收二进制数据作为正文的一部分。发送数据的另一个应用程序将具有如下所示的法拉第请求:

然后,在 Sinatra 中,我将有一个端点来接收这些请求参数和二进制数据并将其传递给模型,如下所示:

当我尝试使用Rack::Test助手测试这个端点时,我最终陷入了一个奇怪的境地。我似乎无法创建正确的模拟来正确测试此端点。根据 PostMan 的一些手动测试,我很确定我的端点可以正常工作。这只是让我坚持下去的测试。这是规格:

当我检查传入请求在测试中的样子时,它不包含正确的正文。params正确设置为我设置的hostverification设置,但主体也设置为参数(通过检查payload = request.body.read)而不是二进制文件。

是否有不同的方法来设置模拟,以便将二进制文件正确设置为请求的主体,并且参数仍然正确设置为请求参数?

0 投票
2 回答
1976 浏览

ruby - 如何使用 rack::test 发送自定义标头?

我花了大约两天时间尝试使用 Rack::Test 发送自定义标头,但没有成功。我只是无法将任何标题发送到我的应用程序中。我在网上找到了很多具有类似代码的示例——方法(地址、正文、标题),但对我来说它们根本不起作用。

ruby 2.5.1p57(2018-03-29 修订版 63029)[x86_64-linux]

应用程序(sinatra)中的代码:

规范/api_spec.rb

输出包含两个测试:

0 投票
2 回答
1217 浏览

ruby-on-rails - Rails 5.2 中的 nil 响应对象,用于 GET 请求的 RSpec-Rails 3.7 规范

我一直对此低头,觉得我可能犯了一个简单的错误,但我无法找到关于这个问题的任何信息。

我有一些 Rails 5 的请求规范,当我测试重定向时——但不是渲染模板——我得到一个错误,undefined method 'response_code' for nil:NilClass. 原因似乎@responsenil在调用匹配器时(在 ActionDispatch::Assertions::ResponseAssertions 代码中,而不是在我的代码中)。我可以使用 cURL 向 API 发出请求,它会按预期返回响应。返回错误的地方在这里(这是 ActionDispatch 代码):

请注意第一行,其中actual参数的默认值设置为@response.response_code.

这是我的测试代码:

测试日志中的相关行是:

有趣的是,当我使用 byebug 检查 的值时subject,它确实返回了一个 Rack::MockResponse 对象,所以这在某种程度上没有通过。

非常感谢我能得到的任何帮助!

0 投票
2 回答
226 浏览

ruby - 拦截 capybara chrome 无头访问

我们使用 Capybara 和 Chrome Headless 进行集成测试。我想写一个 linter,每次 chrome 导航到另一个页面时检查 HTML 结构上的一些指标。然后,当我们的 linter 出现问题时,我会提出一个错误。

我们有一些没有 javascript 的测试,并且猴子补丁 rack-test 到目前为止工作:

但是我还没有在 Capybara 和/或 Chrome Headless 中找到可以拦截响应并检查页面正文的方法。

页面更改时是否可以触发挂钩?或者是否有某种 API Chrome 提供了我可以获取每个请求的正文的地方?或者代理会是一个可行的解决方案吗?

0 投票
1 回答
315 浏览

ruby-on-rails - Rails 系统测试驱动程序我还能使用 rack_test 吗?

Rails 系统测试使用 Capybara。Capybararack_test默认使用驱动,而系统测试selenium默认使用。

水豚驱动程序:

  • rack_test是一个小型 ruby​​ api,它与Rack(几乎所有 Ruby Web 框架底层的 Web 堆栈)一起使用 - 它不知道 javascript
  • selenium一个驱动程序来管理启用 Web 浏览器自动化的库- 它知道 Javascript,因为它实际上使物理 Web 浏览器自动化。

我想知道为什么选择这些,以及对于编写系统测试的 Rails 程序员来说什么是明智的选择。

0 投票
1 回答
61 浏览

ruby - Ruby 3 的“机架测试”有替代方案吗?

我们正在使用rack-test我们的 Cucumber 规格。我们一直在尝试迁移到 Ruby 3 一段时间,当前的问题是 Cucumber 测试由于rack-test在其内部方法中同时使用关键字/位置参数而崩溃。

我准备自己修补它,但是看到 repo 上的活动很少(包括开放数周/数月的 PR),我担心我会做这项工作并且没有人可以修补它。

我看到的唯一选择是:

  • 做这项工作并祈祷会有人审查/合并更改
  • 从现在开始在本地打补丁并在本地使用打补丁的版本(恶心)
  • 寻找替代解决方案rack-test

最后一个解决方案似乎是最好的 IMO。那么,有没有其他选择?