草庐IT

ruby-on-rails - Rspec 测试不会通过使用 assigns()

这是我当前的users_controller_spec.rb文件require'spec_helper'describeUsersControllerdorender_views...describe"success"dobefore(:each)do@attr={:name=>"NewUser",:email=>"user@example.com",:password=>"foobar",:password_confirmation=>"foobar"}endit"shouldcreateauser"dolambdadopost:create,:user=>@attrend.shou

ruby-on-rails - 如何在 RSpec 中模拟数组?

我想在RSpec中模拟一个数组(在应用程序中它是一个来自外部API的返回对象),但我不知道怎么做。我试过这样模拟它:item=double("item")item.stub(:[]){:return_value}这行得通,但随后我将为数组中的每个值获取:return_value。还有别的办法吗? 最佳答案 我认为您不需要为数组生成测试替身,它们会给您的测试代码增加不必要的复杂性。您可以创建假数组并在以后使用它:items=[:return_value1,:return_value2]如果您需要stub方法并为第一次和后续调用返回不同

ruby-on-rails - FactoryGirl 序列破坏了我的 rspec 测试(我认为)

所以我在这里使用Rails4制作一个网络应用程序,如果它有帮助,我在Mac上使用MountainLion,使用AptanaStudio3进行开发。我正在尝试创建一个页面来列出我的应用程序的用户并对其进行分页。我正在使用will_paginate和bootstrap-will_paginate来做到这一点。当我在我的数据库上使用示例用户运行rails服务器时,它工作得很好,但是当我使用RSpec和FactoryGirl运行我的测试时,我对需要用户授权的页面的所有测试都不起作用。所以这就是为什么我认为问题出在FactoryGirl上。以前,我的factory.rb看起来像这样,因为它只需要

ruby-on-rails - 如何写下 rspec 来测试救援 block 。?

我有这样的方法defclassNamedefmethod_namesomecoderescuesomecodeanderrormessageendend那么,如何写下rspec来测试救援block..? 最佳答案 如果你想拯救,这意味着你希望一些代码引发某种异常。您可以使用RSpecstubs伪造实现并强制出错。假设执行block包含一个可能引发的方法defmethod_nameother_method_that_may_raiserescue=>e"ERROR:#{e.message}"end在您的规范中将stub挂接到该方法it

ruby-on-rails - RSpec 的错误行为期望使用 destroy 更改计数

我希望让用户只能删除他们自己创建的作业(而不是其他人的作业)。我已经验证我的应用程序确实通过“railsserver”执行此操作。然而,测试结果很奇怪。这里是有问题的测试:require'spec_helper'describe"Authentication"dosubject{page}describe"signin"do[...]describe"authorization"do[...]describe"correctusercontrol"dolet(:user){FactoryGirl.create(:user)}let(:job){FactoryGirl.create(:j

ruby-on-rails - 如何将 RSPEC 配置为从不在 RAILS_ENV 生产环境中运行

由于我所做的更改,我试图运行一些测试...所以我运行了RAILS_ENV=productionbundleexecrspec这是非常愚蠢的事情,因为rspec(测试)被配置为截断所有表,而这正是在生产中发生的事情!你可以想象后果有没有一种方法可以将rspec配置为在RAILS_ENV=production时永不运行,这样就永远不会发生在任何人身上。还有哪些其他建议或良好做法可以用来避免此类错误更新:我为rspec-rails团队创建了一个问题,他们刚刚提交了一个更改来解决这个问题https://github.com/rspec/rspec-rails/pull/1383/files

ruby - 使用 Rspec 2 测试命令行应用程序的 UI 层

我正在用Ruby编写命令行应用程序。我对Rspec2相当熟悉,因为它在我正在处理的一些Rails应用程序中使用。我正在编写一个命令行应用程序,并且正在尝试将Rspec2用于BDD。如何测试应用程序的用户界面层?我需要为应用程序提供交互式输入,或检查使用puts打印的某些输出。另外,有什么办法可以抑制STDOUT输出吗?当我运行自动测试时,我的应用程序的输出会打印在rspec的状态输出之间,使其难以阅读。 最佳答案 这是一个应该对您有所帮助的示例。我在我用Minitest测试的一个应用程序中使用它,但它应该很容易转换为Rspec。de

ruby - 我可以在 RSpec 中 stub STDERR 吗?

我有一个简单的函数想要测试(可能主要是为了安抚simplecov)。函数是:moduleUtilsextendselfdefblather(msg)msg="==="+msgSTDERR.puts(msg)Rails.logger.debug(msg)endendRSpecdocumentationforstubbing说:Messagescanbestubbedonanyclass,includingthoseinRuby'scorelibrary.但是以下内容:#file:spec/lib/utils_spec.rbrequire'spec_helper'describeUtils

ruby-on-rails - 如何运行尚未写入文件的 RSpec::ExampleGroup?

我打开一个Rails控制台并需要rspec_rails。我想编写如下所示的测试并能够调用它。RSpec.describe("foo")doit"bar"doexpect(false).tobefalseendend当我将其输入控制台时,我看到创建了一个RSpec::ExampleGroup::Foo。但是,我不知道如何调用它。我基本上是在尝试重用我为测试编写的一些辅助方法。例如,我编写了一个名为create_user_and_login的辅助方法,它向正在运行的服务器发送HTTP请求并创建一个新用户。我可以在迁移旧数据库的数据时重用此方法,但该方法调用expect因为到目前为止,它仅使

ruby-on-rails - rails 3 项目中的 RSpec 和自动测试问题

我在运行Ubuntu12.04的机器上使用autotest-notificationv2.3.4和rspecv2.0.1在我的railsv3.2.3项目中编写测试。在我的pages_controller_spec.rb中我有以下代码require'spec_helper'describePagesControllerdodescribe"GET'contact'"doit"shouldbesuccessful"doget'contact'response.shouldbe_successendendend当我运行命令rspecspec/时出现以下错误DEPRECATIONWARNING