rails rspec code`to_not be_valid`的意思是什么?

时间:2017-09-23 01:45:19

标签: ruby-on-rails ruby ruby-on-rails-3

当我在轨道上使用ruby来学习如何测试代码时使用rails rspec,有些代码我无法理解,这里是代码,它只是一个关于停车计量表测试的代码。 / p>

db/migrate/xxxxx_create_parking.rb

class CreateParkings < ActiveRecord::Migration[5.0]

def change
    create_table :parkings do |t|
      t.string :parking_type   #guest, short-term, long-term
      t.datetime :start_at   
      t.datetime :end_at     
      t.integer :amount      

      t.integer :user_id, index: true 

app/spec/models/parking_spec.rb

    require 'rails_helper'

RSpec.describe Parking, type: :model do
  #pending "add some examples to (or delete) #{__FILE__}"

 describe ".validate_end_at_with_amount" do

   it "is invalid without amount" do
     parking = Parking.new( :parking_type => "guest",
                            :start_at => Time.now - 6.hours,
                            :end_at => Time.now)
      expect(parking).to_not be_valid
    end

    it "is invalid without end_at" do
      parking = Parking.new( :parking_type => "guest",
                             :start_at => Time.now - 6.hours,
                             :amount => 999)
       expect(parking).to_not be_valid
     end
   end
end

那么,to_not be_validt.integer :user_id, index: true的意思是什么?感谢。

1 个答案:

答案 0 :(得分:0)

对于be_valid,它正在测试新记录的ActiveModel::Validations,它就像valid?函数一样,将not_to表示我插入此记录parking = Parking.new( :parking_type => "guest",:start_at => Time.now - 6.hours,:amount => 999)end_at 1}}没有t.integer :user_id它不应该工作,通过这个你检查你的代码是否适用于无效的情况,这是一个关于be_valid的好资源。

第二部分ActiveRecord

这是user_id中的一个命令,它在名为index: true的表中添加一个新的列/字段,  user_id在其上放置一个索引(这是数据库世界中的一个概念,它有助于在更短的时间内检索记录),"Grade for " << assignmentName[x] << setw[y] << grade(z) 通常用作外键index