问题标签 [rspec]

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 投票
2 回答
168 浏览

rspec - 用于验证评论表单是否存在的规范中的随机“%2F”

我正在尝试为一个简单的应用程序的 posts/show.html.erb 视图编写规范,我将其放在一起学习 rspec。此刻我有点难以理解额外的“%2F”是从哪里来的。有任何想法吗?

我的规格...

带有额外 %2F 的规范输出...

0 投票
4 回答
4298 浏览

model - 如何在 RSpec 测试中设置模型关联?

我已经将我为 posts/ show.html.erb视图编写的规范粘贴到我正在编写的应用程序中,作为学习 RSpec 的一种方式。我仍在学习模拟和存根。这个问题特定于“应该列出所有相关评论”规范。

我想要的是测试显示视图是否显示帖子的评论。但我不确定如何设置这个测试,然后让测试通过 should contain('xyz') 语句进行迭代。有什么提示吗?其他建议也很感激!谢谢。

- -编辑

更多信息。我有一个 named_scope 应用于我的视图中的评论(我知道,在这种情况下我做了一点倒退),所以@post.comments.approved_is(true)。粘贴的代码以错误“undefined method `approved_is' for #”响应,这是有道理的,因为我告诉它存根注释并返回注释。但是,我仍然不确定如何链接存根,以便 @post.comments.approved_is(true) 将返回一组评论。

0 投票
1 回答
263 浏览

file-upload - 在 merb 中测试经过身份验证的文件上传

这是过去几天让我发疯的事情。我有一个允许经过身份验证的用户将资产上传到站点的操作。我知道控制器操作是正确的,因为我可以手动运行该过程,但是我想使用 rspec 对其进行测试。

我必须使用request帮助程序,以便我可以重用经过身份验证的会话,该会话是:given用于这组测试的。

如果我在规范中设置断点,一切都很好,但是当我运行规范并尝试通过调试器访问控制器操作中的路径时,我得到了这个:

我的猜测是,stub!(:path)没有为通过请求的任何模拟对象设置。

问题是:我是否正在使用正确的方法来测试文件上传,如果不是,还有什么方法?

0 投票
2 回答
119 浏览

ruby - 将“应该”与类方法一起使用?

我习惯拨打电话,例如:

关于变量,但是我怎样才能用类方法做类似的事情File.directory?(my_path)呢?

File.should be_directory(my_path)我尝试过的每一种组合都会导致一个方法丢失,因为 Ruby 试图在我当前的对象上找到“be_directory”,而不是将其与 File 匹配。

我知道我可以把它转过来写

但是当它失败时,它会给出一个非常糟糕的信息。

有任何想法吗?

0 投票
2 回答
10460 浏览

ruby-on-rails - RSpec中的mock和mock_model有什么区别

我最近遇到了不同的教程,人们在其中同时使用mockmock_model函数。

控制器的 RSpec 教程中,他们使用该mock_model功能,但在RSpec 的文档中,只有mock功能,但没有mock_model

我尝试自己进行一些测试,但没有发现任何真正的区别,因为当我使用这两个功能中的任何一个时一切都很好,那么有什么区别吗?

0 投票
11 回答
17503 浏览

ruby-on-rails - 带有 Cucumber Stories 的会话变量

我正在为一个有多个步骤的“注册”应用程序编写一些 Cucumber 故事。

与其编写一个 Huuuuuuuge 故事来一次涵盖所有步骤,那样会很糟糕,我宁愿像普通用户一样完成控制器中的每个操作。我的问题是我将在第一步中创建的帐户 ID 存储为会话变量,因此当访问第 2 步、第 3 步等时,会加载现有的注册数据。

我知道能够controller.session[..]在 RSpec 规范内访问,但是当我尝试在 Cucumber 故事中执行此操作时,它会失败并出现以下错误(而且,我还在某处读过这是一种反模式等......):

使用 controller.session[:whatever] 或 session[:whatever]

使用会话(:随便)

所以,似乎加入会话存储是不可能的。我想知道的是是否有可能(我猜哪个是最好的..):

  1. 模拟会话存储等
  2. 在控制器中有一个方法并将其存根(例如get_registration,它分配一个实例变量......)

我浏览了 RSpec 书(好吧,略读)并浏览了 WebRat 等,但我还没有真正找到我的问题的答案......

再澄清一点,注册过程更像是一个状态机——例如,用户在注册完成之前要经过四个步骤——因此“登录”并不是一个真正的选择(它打破了网站工作方式的模型)...

在我的控制器规范中,我能够取消对基于会话变量加载模型的方法的调用 - 但我不确定“反模式”行是否也适用于存根和模拟?

谢谢!

0 投票
1 回答
471 浏览

ruby-on-rails - 如何以最小的数据库开销在 Rails 中测试关联扩展逻辑

我喜欢在任何地方使用模拟和存根来保持我的规范快速运行。我对如何在下面测试 find_special 方法感到困惑:

我不介意为此使用 :extend => 模块语法,但我认为这没有什么不同。

0 投票
2 回答
722 浏览

ajax - 如何使用 Merb 和 Webrat 测试 AJAX 请求?

我正在将merb与rspec和webrat一起使用。如何确保 rjs 模板成功渲染?由于ajax,我不能只写have_xpath。

0 投票
2 回答
714 浏览

ruby-on-rails - Rails:使用 ZenTest / autospec 测试新目录中的规范

我在我的 rails 应用程序中添加服务类目录:app/services

我想在目录中为这些类添加规范:spec/services

我在 spec/services 中添加了一个规范,但运行 autospec 不会运行该示例。

有没有办法配置 autospec 在新目录中运行示例?

谢谢。

0 投票
1 回答
1940 浏览

ruby - 如何使用 RSpec 区分多行字符串?

我正在使用构建器生成一些 XML,并希望将结果与一些文件内容进行比较。但是,由于字符串很长,当字符串不同时,输出很难读取。

我知道 ruby​​ 中有许多用于区分字符串的库,但是 rspec 中是否有内置工具可以生成更易于阅读的多行字符串比较失败?