Tag: rspec rails

使用RspectestingRails 3.1可挂载引擎

我开始制作一个Rails 3.1引擎,而且我很难用rspec来testing它。 首先,如果我运行rails g integration_test whatever它在testing/集成中创build常规集成testing而不是spec / requests(rspec-rails gem作为gemspec文件中的开发依赖项安装和需要) 此外,当我运行一个规范testing时,我得到一个错误,说与我正在testing的模型对应的表尚未创build。 我尝试了rake engine_name:install:migrations并运行rake db:migrate从虚拟应用程序内部rake db:migrate ,并得到“表已存在”错误。 一切似乎都是断开的,我觉得我错过了一些东西,使得rspec gem无缝地工作,就像通常使用完整的rails应用程序一样。 我跟着从这里http://rubyx.com/2011/03/01/start-your-engines的所有更改,我可以通过控制台启动虚拟应用程序手动testing引擎,如下所示http:// railscasts。 com / episodes / 277-mountable-engines 。 有没有办法让RSpectestingrails 3.1引擎的默认值?

使用Rails 3.2.11和RSpec发布原始JSON数据

为了确保我的应用程序不易受此漏洞攻击 ,我试图在RSpec中创build一个控制器testing来覆盖它。 为了做到这一点,我需要能够发布原始的JSON,但我似乎没有find办法做到这一点。 在做一些研究的时候,我已经确定至less使用过RAW_POST_DATA标题的方法,但是这似乎不再适用: it "should not be exploitable by using an integer token value" do request.env["CONTENT_TYPE"] = "application/json" request.env["RAW_POST_DATA"] = { token: 0 }.to_json post :reset_password end 当我查看params散列时,token完全没有设置,它只包含{ "controller" => "user", "action" => "reset_password" } 。 在尝试使用XML时,甚至在试图只使用普通的发布数据时,我都会得到相同的结果,在所有情况下,似乎都没有设置这个时间段。 我知道在最近的Rails漏洞中,散列参数的方式发生了变化,但是仍然有办法通过RSpec发布原始数据吗? 我可以以某种方式直接使用Rack::Test::Methods ?

Rails 3.1插件gem,虚拟testing应用程序,rspec

所以Rails 3.1带有一个不为人知的方便的“rails g插件新”生成器,它为您提供了一个适合rails gem插件的框架。 [http://guides.rubyonrails.org/plugins.html#or-generate-a-gemified-plugin] 这样做的一个有用的东西是设置方便的Test :: Unittesting。 它为您提供了一个基本的虚拟Rails应用程序,您的testing可以在上下文中运行,以testing仅在Rails应用程序的副本中运行的“引擎”行为。 (它把它放在./test/dummy)。 但是你的testing仍然在my_gem / test中,testing不会在虚拟应用中。 而且,my_gem / test / test_helper.rb在那里写,这样testing将在虚拟应用程序的上下文中运行,在../dummy/config/environment处引导。 我之所以这样描述,是因为我认为很多人不知道这个新的发电机,这个发电机的设置非常好。 但是我的问题是,有没有人想出如何用rspec来做到这一点呢? 我试图遵循相同的原则DIY来设置这样的事情,在一个轨道插件gemrspec,但我遇到了各种混乱的路障,并希望也许别人已经find了它(或将有兴趣计算它为了我们其他人,嘿)。

预计真的回应真实?

我升级了我的rspec-rails到3.0.1,现在我在所有的testing中都看到这个错误 Failure/Error: Sidekiq::Status::complete?(json.jid).should be_true expected true to respond to `true?` 我找不到解决scheme,也找不到我想要的东西。

工厂女孩创build绕过我的模型validation

我正在使用Factory Girl在我的模型/unit testing中为一个组创build两个实例。 我正在testing模型来检查.current调用根据下面的expiry属性只返回“当前”组… describe ".current" do let!(:current_group) { FactoryGirl.create(:group, :expiry => Time.now + 1.week) } let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now – 3.days) } specify { Group.current.should == [current_group] } end 我的问题是我已经在模型中validation了新组的到期date是在今天的date之后。 这提高了下面的validation失败。 1) Group.current Failure/Error: let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now – 3.days) } ActiveRecord::RecordInvalid: Validation failed: Expiry is before todays date 有没有办法强制创build团队,或者在创buildFactory […]

如何在RSpectesting中打开ActiveRecord的SQLdebugging日志logging?

我有我的模型RSpectesting,我想打开SQL ActiveRecord日志logging,就像我在Rails服务器模式中看到的。 怎么做? 我开始我的testing RAILS_ENV=test bundle exec rspec my/test_spec.rb 谢谢

Rails 3.1,RSpec:testing模型validation

我已经开始了在Rails中使用TDD的旅程,并遇到了一个关于模型validationtesting的小问题,我似乎找不到解决scheme。 比方说,我有一个用户模型, class User < ActiveRecord::Base validates :username, :presence => true end 和一个简单的testing it "should require a username" do User.new(:username => "").should_not be_valid end 这正确地testing存在validation,但是如果我想更具体一点呢? 例如,在错误对象上testingfull_messages。 it "should require a username" do user = User.create(:username => "") user.errors[:username].should ~= /can't be blank/ end 我对初始尝试(使用should_not be_valid)的担心是RSpec不会产生描述性错误消息。 它只是说“预计有效?返回假,是真的。” 但是,第二个testing示例有一个小缺点:它使用create方法而不是新方法来获取错误对象。 我希望我的testing能够更具体地说明他们正在testing的内容,但同时不需要触摸数据库。 任何人有任何投入?

object.any_instance should_receive vs expect()来接收

以下一段代码按预期工作: Object.any_instance.should_receive(:subscribe) 但是当使用新的rspec期望它不起作用: expect(Object.any_instance).to receive(:subscribe) 错误是: expected: 1 time with any arguments received: 0 times with any arguments 如何使expect()获得这个工作?

spec / rails_helper.rb与spec / spec_helper.rb有什么不同? 我需要它吗?

我正在做Rails教程第二次。 当我input这个 rails generate integration_test static_pages 我得到spec/rails_helper.rb和spec/spec_helper.rb而不是spec/spec_helper.rb 现在,当我运行我的testing时,它们比上次做的时间更长(更“冗长”),而且速度更慢。 我想知道这两个文件之间的区别是什么,如果我做错了什么。 另外,有没有办法摆脱rails_helper.rb文件没有搞乱一切?

RSpec:描述,上下文,function,场景?

describe , context , feature , scenario :四者之间有什么区别?我什么时候使用每一个?