Tag: rspec

运行规范时禁止Ruby警告

我正在寻找一种方法来抑制Ruby警告,当我运行我的规格。 spec spec/models/account_spec.rb 我收到警告,如: DEPRECATION WARNING: ActiveSupport::Dependencies.load_paths is deprecated, … warning: already initialized constant SOME_CONSTANT_NAME 使用ActiveSupport::Deprecation.silenced = true删除ActiveSupport警告非常简单。 如何防止已经初始化的常量警告作为我的spec命令的一部分? 或者通过创build另一个可以抑制这种警告的spec文件。 请记住,这些警告来自gem文件,因此我不能进入这些文件并用Kernel.silence_warnings它们Kernel.silence_warnings 。 注意:我明白禁止警告是不好的。 但是,当我在vim运行单个spec ,如果警告不会让我的屏幕混乱,那将会很好。

RSpec中的mock和mock_model有什么区别?

我最近遇到了不同的教程,人们使用mock和mock_model函数。 在RSpec控制器教程中,他们使用mock_model函数,但在RSpec的文档中 ,只有mock函数,但没有mock_model 我试着自己去做一些testing,但是我没有发现任何真正的区别,因为当我使用这两个函数中的任何一个时,一切正常,那么是否还有什么区别呢?

你将如何在Ruby on Rails应用程序中使用rSpectesting观察者?

假设你在一个Ruby on Rails应用程序中有一个ActiveRecord :: Observer – 你如何用rSpectesting这个观察者?

如何更改用于在rails中testing的默认“www.example.com”域?

我有一个Rails应用程序,根据访问的域名(例如,www.myapp.com将以不同的方式调用user.myapp.com)来执行不同的操作。 在生产使用这一切工作正常,但我的testing代码总是看到一个“www.example.com”的主机名。 有没有一个干净的方式来testing指定它假装访问的主机名?

rSpec和Rails3中的stubbingdevise

你将如何在rSpec中存储Rails 3中的Devise。 我有一个UsersController和一个User模型。 这两个都和Devise有关,我正在写控制器的规格,而且我真的很难与我的期望,因为devisesign_in真的干扰了作品。 任何事情都会有帮助。

RSpec any_instance deprecation:如何解决它?

在我的Rails项目中,我使用any_instance使用rspec-mocks,但是我想避免这个弃用消息: Using any_instance from rspec-mocks' old :should syntax without explicitly enabling the syntax is deprecated. Use the new :expect syntax or explicitly enable :should instead. 这是我的规格: describe (".create") do it 'should return error when…' do User.any_instance.stub(:save).and_return(false) post :create, user: {name: "foo", surname: "bar"}, format: :json expect(response.status).to eq(422) end end 这是我的控制器: def create @user = User.create(user_params) […]

未在rspec中处理延迟的作业

我试图运行一个自定义延迟作业(GetPage :: GetPageJob)rspecs,但我有一个问题。 当我运行它们时,这些工作排队很好(也就是说,插入在delayed_jobs表中),但是它们不被工作人员处理。 事实上,在第一个terminal上启动“rake jobs:work RAILS_ENV = test”之后,在第二个terminal上运行规范之后,我看不到第一个terminal上的工作人员的任何输出。 另一方面,如果我通过“脚本/控制台testing”将它们排入队列,这些工作就会得到很好的处理。 所以我有点困惑。 无论是规格还是脚本/控制台,我用来排队工作的线路是: Delayed::Job.enqueue GetPage::GetPageJob.new("http://cnn.com") 任何想法 ?

iconv的弃用警告与ruby1.9.3

我运行rspec时遇到了这个警告: /gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240:in`block in require':iconv将来会被弃用,改用String#encode。 我用rails 3.1.2.rc2版本得到相同的警告。 似乎它与sqlite3gem,但我不知道。 ruby1.9.2没有警告 任何build议如何处理?

RSpec是否有可能期望两个表格发生变化?

RSpec期望改变: it "should increment the count" do expect{Foo.bar}.to change{Counter.count}.by 1 end 有两种方法可以期待两个表格的变化吗? expect{Foo.bar}.to change{Counter.count}.by 1 and change{AnotherCounter.count}.by 1

rspec中的double方法是什么?

在rspec doc中说,我应该使用double方法来创buildtestingdouble。 但是我可以看到,即使我不使用double ,它也能正常工作。 不使用double有什么问题吗? 另外,如果我不使用双如何MyClass获取stub和其他rspec方法? 它们在rspec中运行时是否可用于所有对象? require 'spec_helper' class MyClass def self.run new.execute end def execute 'foo' end end describe MyClass do it 'should stub instance method' do obj = MyClass.new obj.stub(:execute).and_return('bar') obj.execute.should == 'bar' end it 'should stub class method' do MyClass.stub(:run).and_return('baz') MyClass.run.should == 'baz' end end