问题标签 [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 回答
453 浏览

ruby - 测试 padrino post 方法被 csrf 停止

我有一个带有单个 post 方法和一个 get 方法的 padrino 控制器。我可以使用 rack-test 来测试 get 方法而不是 post 方法。当我测试请求返回 403 时。我认为这是因为 padrino 内置了 csrf 保护,因为当我注释掉该行时,set :protect_from_csrf, true我可以测试发布路线。显然我不想注释掉这一行,因为 csrf 很有用。为了测试目的,我怎样才能获得测试这些路由的临时访问权限?

控制器

测试

```

0 投票
1 回答
86 浏览

ruby - 测试中的 Ruby 加载模块

我正在运行一个 padrino 应用程序,并从包含的邮件开始。我想测试是否发送了一封邮件,并且之前访问 Mail::TestMailer 对象以查看测试期间传递的邮件没有问题。

这就是我正在做的事情的背景,但不完全是这个问题。我想知道一个模块如何在运行时环境中可用。我有两个版本的这个测试

第一的

第二

在第二个版本中,此测试失败并显示错误消息NoMethodError: undefined method to' for nil:NilClass这对我来说很有意义。我清除了消息,然后要求最后一条应该为零。但是,当我在第一个版本上运行测试时,错误是NameError: uninitialized constant OwnersControllerTest::Mail

所以不知何故 get 方法导致Mail对象/模块可用。我不明白它怎么能做到这一点。我不知道这是机架测试还是 padrino 的东西,所以我不确定要在此处复制哪些额外信息。

0 投票
3 回答
2238 浏览

ruby - 如何使用 Rack/Test 测试 Sinatra 重定向?该应用程序有效,但测试没有

看起来要么我错过了一些非常基本的东西,要么 Rack/Test 无法应对 Sinatra 进行重定向。

大概有办法解决这个问题,否则 Rack/Test 将毫无用处。谁能告诉我我应该怎么做才能让它在这里工作?

(编辑:我最终想要实现的是测试我最终得到哪个页面,而不是状态。在测试中,last_response 对象指向我的应用程序中不存在的页面,当然不是你实际的页面运行时获取。)

一个示例应用程序:

这如你所料。转到'/' 或'/test' 可以获得views/test.haml 的内容。

但是这个测试不起作用:

这是运行测试时发生的情况:

last_response.inspect看起来像:

我想知道 Rack/Test 是否刚刚任意决定在重定向中插入“ http://example.org ”?

0 投票
0 回答
93 浏览

ruby - 如何在机架测试中设置变量“app”?

我有一个机架应用程序:

这工作正常,但我想更改app为其他内容,因为有一个名为 App 的模型。

如何设置机架测试以针对具有其他名称的应用程序运行?

在 RSpec 中工作。更改应用程序会导致:

0 投票
0 回答
44 浏览

ruby - 如何让 Sinatra 生成对 testrunner 友好的错误页面?

我正在使用几个常见的嫌疑人(rspecrack/test)测试 Sinatra 应用程序。在开发过程中,有时应用程序中的错误会导致 Sinatra 生成错误响应页面。这个页面是一段华丽的 HTML,如果我在浏览器中与它进行交互,它会非常好用,但是,在基于文本的测试运行器世界中,它实际上很难阅读。

有没有一种配置 Sinatra 的好方法,当我在单元/集成测试环境中运行它时,它会以纯文本形式显示这些错误?

0 投票
1 回答
1033 浏览

ruby - 使用 RSpec 使用 Rack::Test 测试会话变量

给定代码

我可以在机架测试中设置会话变量。但是,我如何(使用机架测试)测试 RSpec 中的会话变量?假设,例如:

我似乎找不到任何用于读取 Rack 环境变量的文档,只能编写它们。

0 投票
2 回答
160 浏览

ruby-on-rails - 在编写 Rails 控制器测试时,为什么要使用#post vs #get vs #delete?

我意识到我不明白为什么 Rails 控制器测试/规范按照它们的方式构建的基本原理。

在编写控制器测试时,我们鼓励或多或少地将控制器视为一个单元并相应地编写单元测试,只关心控制器的输入和输出。例如,我们设置了数据库的某种状态,并可能存根一些 Devise 方法来模拟用户登录,当我们调用post :create或其他什么时,我们附加一个发送到该控制器操作的参数散列。

然后,对于输出,我们查看数据库的结果状态,我们检查响应 HTTP 代码和重定向等,以及将传递给模板渲染过程的任何已分配变量。

控制器只是一个 Ruby 类,它的公共方法被调用来执行各种 RESTful 操作。所以在控制器规范中,我们不加载像/kittens/new;这样的 URL。相反,我们直接调用控制器动作,例如get :new. 路线不应该是相关的;它们只是系统的另一部分,它决定为给定请求调用哪个控制器操作。

那么为什么我们在调用控制器动作时必须指定 HTTP 方法(如get, post, put, )?delete这不是外部细节,是路由工作原理的一部分吗?

delete :show出于好奇,我采用了我的控制器规格之一,并切换了所有这些方法,最终得到了和之类的东西get :create什么都没坏。所以我非常困惑:如果这些方法与我们在控制器规范中测试的代码无关,我们为什么要区分这些方法?

0 投票
1 回答
1003 浏览

ruby - 在 RSpec / Rack::Test / Sinatra 中同时运行两个测试

给定示例 sinatra 应用程序

和示例 RSpec 测试

第一个测试 ( it does /1) 将挂起,等待 /2 被调用。

是否可以告诉 RSpec 在开始测试 #2 之前不要等待测试 #1 的结果完成?AKA,在 RSpec 中可以进行异步测试吗?

0 投票
1 回答
152 浏览

ruby - Sinatra 机架测试“0 次测试”运行

我正在尝试为一个小型 Sinatra 应用程序编写一些单元测试。当我运行ruby test.rb时,终端报告它正在“运行测试”,但它实际上并没有接受我的单元测试。

无论是通过本地输入还是通过 phusion 乘客,应用程序本身都运行良好ruby app.js,因此希望这表明我的 config.ru 和 app.js 文件设置正确。

这是我到目前为止所拥有的。

测试.rb

终点站

似乎“app”和第一个测试“root”从未运行过,因为没有打印调试行。我在测试设置中遗漏了什么?看起来好像我在模仿 sinatra 配方/现有应用程序中的测试,所以我不确定我在搞砸什么。谢谢!

0 投票
0 回答
593 浏览

ruby - Capybara/Cucumber 和 Rack/Test 的 POST 请求

我有同样的问题如下:

在“支持/env.rb”中:

在“step_definitions/restUtils.rb”中:

结果:nil:NilClass (NoMethodError) 的未定义方法“调用”

观察:红宝石2.0.0p645(2015-04-13)[x64-mingw32]黄瓜2.0.2

@Elye,你能帮帮我吗?使用 REST 进行测试的替代方法是什么?问候!