Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rspec和首次试验_Ruby On Rails_Testing_Rspec - Fatal编程技术网

Ruby on rails rspec和首次试验

Ruby on rails rspec和首次试验,ruby-on-rails,testing,rspec,Ruby On Rails,Testing,Rspec,最后,我开始阅读一本关于rspec的书,并在我的一个模型上实现一些简单的测试,然后慢慢构建它 My model Coaster.rb-(删除了一些不重要的部分) 以及运行测试时得到的结果: 1) Coaster is valid with a name Failure/Error: expect(coaster).to be_valid NoMethodError: undefined method `name' for nil:NilClass

最后,我开始阅读一本关于rspec的书,并在我的一个模型上实现一些简单的测试,然后慢慢构建它

My model Coaster.rb-(删除了一些不重要的部分)

以及运行测试时得到的结果:

  1) Coaster is valid with a name
     Failure/Error: expect(coaster).to be_valid
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./app/models/coaster.rb:65:in `name_and_park'
     # ./app/models/coaster.rb:69:in `slug'
     # ./spec/models/coaster_spec.rb:9:in `block (2 levels) in <top (required)>'
1)过山车的名称有效
失败/错误:期望(过山车)。有效
命名错误:
nil:NilClass的未定义方法“name”
#./app/models/coaster.rb:65:in'name_and_park'
#./app/models/coaster.rb:69:in'slug'
#./spec/models/coaster_spec.rb:9:in'block(2层)in'

如果我删除了我在模型中用星号标记的线条,那么测试通过了,但是那些线条没有通过测试呢?

正是它所说的,您正在创建一个没有相关驻车的过山车,因此调用
驻车.name
失败


这意味着验证还可以确保模型有一个slug。

这正是它所说的,您正在创建一个没有相关驻车的过山车,因此调用
Park.name
失败


这意味着验证还可以确保模型有一个slug。

要从过山车中获取停车位,我只需在代理上将prefix设置为true时执行coaster.park\u name。我猜,根据你所说的,为了正确编写测试,我需要确保我在测试中创建的过山车有一个停车位,然后测试过山车名称?@rctneil哦,我错过了你设置的
:前缀
,对不起。但是,是的,因为没有停车场,那条线会出故障。因此,我猜slug是模型验证的一部分。要从过山车中获取公园,我只需在代理上将前缀设置为true时执行coaster.park\u name。我猜,根据你所说的,为了正确编写测试,我需要确保我在测试中创建的过山车有一个停车位,然后测试过山车名称?@rctneil哦,我错过了你设置的
:前缀
,对不起。但是,是的,因为没有停车场,那条线会出故障。所以我猜slug是模型验证的一部分。
describe Coaster do

  it 'is valid with a name' do
    coaster = Coaster.new(
      name: 'Collin'
    )
    expect(coaster).to be_valid
  end

end
  1) Coaster is valid with a name
     Failure/Error: expect(coaster).to be_valid
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./app/models/coaster.rb:65:in `name_and_park'
     # ./app/models/coaster.rb:69:in `slug'
     # ./spec/models/coaster_spec.rb:9:in `block (2 levels) in <top (required)>'