Tag: rspec

Factory Girl怎么没有对独特属性进行排序?

我的控制器规范失败,因为Factory Girl似乎正在创建非唯一用户,即使我对需要唯一的用户属性进行排序。 错误 1) TopicsController POST #create when topic is invalid should render new Failure/Error: let(:invalid_topic) {Factory.build :invalid_topic} ActiveRecord::RecordInvalid:Validation failed: Email has already been taken, Username has already been taken 2) TopicsController POST #create when topic is valid should redirect to show Failure/Error: let(:valid_topic) {Factory.build :topic} ActiveRecord::RecordInvalid: Validation failed: Email has already been taken, Username […]

路由规范是否支持重定向路由?

在深入研究这个问题后,我对文档的理解和结果之间陷入了僵局。 根据https://www.relishapp.com/rspec/rspec-rails/v/2-8/docs/routing-specs/route-to-matcher ,我们应该能够编写以下内容: #rspec-rails (2.8.1) #rspec (>= 1.3.1) #rspec-core (~> 2.8.0) # routing spec require “spec_helper” describe BusinessUsersController do describe “routing” do it “routes to some external url” do get(“/business_users/7/external_url”).should route_to(“http://www.google.com”) end end end # routes.rb BizeebeeBilling::Application.routes.draw do resources :business_users do member do get “external_url” => redirect(“http://www.google.com”) end end end 运行此规范会产生以下结果:失败: 1) BusinessUsersController routing routes […]

Capybara没有使用action_cable

我正在使用带有动作电缆的Rails 5 beta 3,这种集成在开发中运行良好,但是当我尝试通过capybara运行function测试时,它似乎没有达到通道操作。 我正在使用Portergeist并将puma配置为capybara的服务器。 我也在使用es5-shim和es6-shim。 有没有其他人经历过这个或知道任何解决方法? 谢谢! 编辑 我正在使用这个水豚分支来配置Capybara中的Puma Capybara.register_server :puma do |app, port, host| require ‘puma’ Puma::Server.new(app).tap do |s| s.add_tcp_listener host, port end.run.join end 我没有在config.action_cable.allowed_request_origins上设置任何内容

控制器规范中的RSpec存根辅助方法

发现类似的问题,但令人惊讶的是,我发现,给出一个简单的答案…… 试图在我的控制器规范中存根一个辅助方法; 不太确定哪个对象需要加倍? Controller调用此方法: #app/helpers/sessions_helper.rb def signed_in? current_user.present? end 我想在规范中将其存根以返回true / false。

rspec,factory_girl和datamapper的spork和cache_classes问题

我有Spork测试服务器的问题。 如果我在config / environments / test.rb中设置config.cache_classes = false,那么规格就会开始出现rasie错误。 Failure/Error: task = Factory(:something, :foo => @foo, :bar => @bar) DataMapper::ImmutableError: Immutable resource cannot be modified 这是我的spec_helper.rb: require ‘spork’ Spork.prefork do if ENV[‘CODE_COVERAGE’] == ‘1’ require ‘simplecov’ SimpleCov.start ‘rails’ end ENV[“RAILS_ENV”] ||= ‘test’ require File.expand_path(“../../config/environment”, __FILE__) require ‘rspec/rails’ require ‘webmock/rspec’ require ‘factory_girl’ Dir[Rails.root.join(“spec/controllers/shared/*.rb”)].each { |f| require f […]

为什么运行Rspec时会出现未定义的方法’have’错误?

我最近升级到Rails 4,一切正常,除了我的Rspec测试。 require ‘spec_helper’ describe Invoice do before :each do @user = FactoryGirl.create(:activated_user) person = FactoryGirl.create(:person, :user => @user, :company => nil) @project = FactoryGirl.create(:project, :user => @user, :person_ids => [person.id], :invoice_recipient_id => person.id) end it “has a valid factory” do expect(FactoryGirl.build(:invoice, :project => @project, :user => @user)).to be_valid end it “is invalid without a […]

我应该如何使用RSpec全局存根方法?

我正在研究Rails应用程序。 我试图在全局范围内存根方法。 我正在做的是将它存储在RSpec配置中,在before(:suite)块上,如下所示: RSpec.configure do |config| config.before(:suite) do allow_any_instance_of(MyModel).to receive(:my_method).and_return(false) end end 但是,启动测试失败,并出现以下错误: in `method_missing’: undefined method `allow_any_instance_of’ for # (NoMethodError) 任何线索? 我应该如何使用RSpec全局存根方法? P.

带载波上传字段的工厂

你好,我需要为我的模型建立工厂,例如 Factory.define :farm do |f| f.name { Factory.next :name } f.harvest ‘3’ f.offers ‘Random’ f.latitude ’43’ f.longitude ‘-70’ f.about ‘We rocks!’ f.logo { Factory.next :logo } # this doesn’t work end 现在我只是将字符串“#{n} .jpg”传递到我的徽标字段中,这不起作用,如何评估此字段? 我正在使用CarrierWave进行上传。

如何显示RSpec测试生成的SQL查询日志?

我正在为rails 3应用程序编写规范。 我想测试数据库事务是否真的有效。 能够看到在由规范驱动的情况下生成我的app的sql查询真的很有帮助。 有没有办法像在rails控制台中一样查看查询? 我正在使用Rails 3.0.9,RSpec 2.6和sqlite(稍后将转移到mysql)

Rails / Rspec:测试delayed_job邮件

只是想知道如何测试动作邮件请求实际上是发送到rspec中的delayed_job que。 我原以为它很简单,但我的delayed_job队列似乎没有增加。 代码如下: 控制器: def create @contact = Contact.new(params[:contact]) if @contact.save contactmailer = ContactMailer contactmailer.delay.contact_message(@contact) redirect_to(contacts_url) else render :action => “new” end 规格: it “queues mail when a contact is created” do expectedcount = Delayed::Job.count + 1 Contact.stub(:new).with(mock_contact()) { mock_contact(:save => true) } post :create, :contact => mock_contact expectedcount.should eq(Delayed::Job.count) end 在调用控制器之前和之后,Delayed :: Job.count都返回0.我已经尝试从控制器中取出条件,但我仍然无法使延迟的作业数增加。 […]