我正在测试在Rails5.2应用中使用RSpec 3.7上传文件,我见过的最简单的建议(几个地方,including this SO post)是使用fixture_file_upload -它看起来很棒,除了它似乎不能在我的应用中使用,我不知道为什么。 我唯一能想到的就是我们的应用程序使用的不是ActiveRecord,而是MongoID。但是不应该要求ActiveRecord使用这些方法...他们完全没有关系。Rails 5中是否还有我遗漏的另一个新的"ActiveSomething“库?(此应用程序是从Rails 4应用程序升级而来的...) 为了更具体地解释我的问题,我试着把
我可能已经或者可能没有在RSpec代码中发现一个bug,它不允许它在使用accepts_nested_attributes_for时根据需要发布嵌套属性。
以下是我的控制器测试:
it 'attaches a file to document' do
post :create, {
app_id: @app1.id,
document: {
recipient_id: @app2.id,
delivery_service: 'default',
attachments_attributes: {
我正在将一个对象保存到RSpec的数据库中。这个对象有一个Carrierwave字段和它的存在验证。我在一家工厂使用fixture_file_upload处理这个领域,速度非常慢。我希望存根Carrierwave文件处理完全,但所有的解决方案似乎过时了,我不能让他们工作。
我的模型:
class Product < ActiveRecord::Base
validates_presence_of :image
mount_uploader :image, ProductMainImageUploader
end
我的工厂:
factory :product do
nam
我在用rails fixture_file_upload上传回形针文档时遇到了这个问题(升级rails版本后)
知道回形针4.0和更高版本需要验证content_type,我的规范仍然失败,错误:File has an extension that does not match its contents,即使是在验证之后或特别请求do_not_validate_attachment_file_type之后。
我在多个(所有的)回形针模型中都有这样的场景.
一个例子如下:
型号:
class SignatureFile < ActiveRecord::Base
...
has_at
下面是我上传文件的测试代码。
describe "file process" do
before(:each) do
# debugger
@file = fixture_file_upload('test.csv', 'text/csv')
end
it "should be able to upload file" do
post :upload_csv, :upload => @file
response.should be_success
end
end
然而,当我运行rspec spe
此处的Rspec noob总数。今晚写我的第一个测试。
我有一个叫Image的模型。我使用回形针附加了一个名为photo的文件。标准的东西。我已经运行了回形针生成器,在生产和测试模式下一切正常。
现在我有了一个名为image.rb的规范文件,它看起来像这样(它是由ryanb的nifty_scaffold生成器创建的):
require File.dirname(__FILE__) + '/../spec_helper'
describe Image do
it "should be valid" do
Image.new.should be_va
我正在用rspec测试CSV上传程序,并将一个测试文件保存在/spec/fixture_file_upload中,并将该文件导入到测试中:
let(:file) do
fixture_file_upload(
Rails.root.join("spec/fixtures/chargeback_test.csv"),
"text/csv"
)
end
这是可行的,但我在每个规范中都有文件路径。我想通过把它放到工厂中来干涸我的代码,但是我很难让FactoryGirl理解我想要一个从FactoryGirl.create(:chargeback_
这看起来有点愚蠢,但我只是按照教程开始学习Rspec。
我有一个包含布尔列recommended的Review模型
Class Review < ActiveRecord::Base
validates_inclusion_of :recommended, :in => [true, false], message: "recommended not a boolean value"
end
所以我写了一个基本的Rspec测试,以确保用户不能保存为nil值:
it "is invalid without a non-boolean recommend
我正在使用rspec,capybara和launchy来测试我的web应用程序。
这是我的规格:
require 'spec_helper'
describe "Routes" do
describe "GET requests" do
it "GET /root_path" do
visit root_path
page.should have_content("All of our statuses")
click_link
我有一个模型,它描述了一个病人(一个包),它引用了目的地医院和运输的急救车:
class Packet < ActiveRecord::Base
belongs_to :hospital
belongs_to :provider
validates_presence_of :hospital_id
validates_presence_of :provider_id
end
class Hospital < ActiveRecord::Base
has_many :packets
end
class Provider < ActiveRecord::Base
我正在编写Rspec测试,但是它们失败了,因为Mysql不识别字段列表中的individual列。
当我查看数据库内部时,individual列确实存在于数据库中。
schema.rb在正确的表中列出了它,在ruby模型中它被提到为attr_accessible。
以下是错误日志:
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::StatementInvalid:
Mysql2::Error: Unknown column 'individual' in 'fiel
我有一个用户模型,如果我添加这个自定义验证,我的空rspec测试失败:
validate :password_complexity
def password_complexity
if !password.blank?
errors.add(:password, "must contain a upper case character") if password.match(/[A-Z]/)
end
end
Rspec:
require 'rails_helper'
RSpec.describe User, type: :m
我正在使用rspec和factoryBot为我的rails应用程序创建自动化测试。在我的案例中,我创建了一家需要有徽标的公司。在测试中创建公司不是问题,但如果我尝试在测试文件之外修改公司,则会收到以下错误消息:
ActiveRecord::RecordInvalid:
Validation failed: Logo can't be blank
我尝试过其他上传方法,但没有成功。下面是公司的工厂和我用来创建公司的流程。这不是我的实现中的确切代码,因为我无法分享它,但我已经尽可能地复制了它。
如果我手动测试代码,它会工作得很好。只有在使用rspec运行代码时,才会发生错误。
fac
在我的上传文件的rspec中,我存根了一个函数,如下所示:
allow(ABCCLass::XYZProcessor).to receive(:prepare_processing).with(csv_statements).and_return(nil)
和
let(:csv_statements) do
[fixture_file_upload('transaction.csv', 'application/csv')]
end
I get error in expect: expect Rack::Test::UploadedFile get Acti
我在post请求上遇到了RSpec和fixture_file_upload的麻烦。 这就是问题所在:我试图通过上传发送一张图片来创建一个包含图片的类别,但是当图片到达时,它会改变它的类类型。 我在等着进入params[:category][:image]一个ActionDispatch::Http::UploadedFile,但我收到的是ActionController::Parameters。 我的请求示例: context 'when creates a new main category with valid params' do
let(:cate
我有一个获得ActiveRecord作用域的控制器索引测试。测试目前看起来是这样的(包括一些内联调试内容):
describe "GET index" do
it "assigns all schools as @schools" do
get :index
puts assigns(:schools).class
puts School.populated.class
assigns(:schools).should == School.populated
end
end
输出是这样的:
ActiveRecord::Re
当系统尝试回滚数据时,rspec和HABTM关系出错。
下面是我的rspec配置:
RSpec.configure do |config|
config.use_transactional_fixtures = true
config.infer_spec_type_from_file_location!
end
和一个非常虚构的HABTM关系:
# == Schema Information
# Table name: permission
# id :integer not null, primary key
# name
我正在rails测试环境中作为规范套件的一部分运行迁移。当我运行迁移时,它会抛出下面的错误,我不确定为什么会发生这个错误,因为只有一个迁移是从备份文件运行的,如下所示。
I使用rubyVersion1.9.3 postgres版本9.1.24
class StructureSnapshot < ActiveRecord::Migration
def up
execute IO.read("db/sql/20150422144950_structure_snapshot.sql")
end
end
下面是运行迁移时的错误。
--INSERT INTO schema_