Rspec 命名错误:未定义的方法标题';零级:零级
我在使用RubyonRails和rspec方面是新手 当我尝试为Mymodel Controller执行rspec测试时,我遇到了这个问题 当我通过浏览器访问页面时,Mymodel正在按预期工作。。。但是当我执行rspec测试时失败了Rspec 命名错误:未定义的方法标题';零级:零级,rspec,ruby-on-rails-4,nameerror,Rspec,Ruby On Rails 4,Nameerror,我在使用RubyonRails和rspec方面是新手 当我尝试为Mymodel Controller执行rspec测试时,我遇到了这个问题 当我通过浏览器访问页面时,Mymodel正在按预期工作。。。但是当我执行rspec测试时失败了 class MymodelController < ApplicationController def show @model = Mymodel.find(:first, :conditions => { :title => "Mo
class MymodelController < ApplicationController
def show
@model = Mymodel.find(:first, :conditions => { :title => "Model-Title" } );
end
end
有什么线索吗
谢谢
编辑:以下是遇到的错误:
Failures:
1) MymodelsController GET 'show' assigns model should have 'Model-Title' as title
Failure/Error: expect(assigns(:model).title).to eq("Model-Title")
NoMethodError: undefined method title' for nil:NilClass
#./spec/controllers/mymodels_controller_spec.rb:15:in block (3 levels) in <top (required)>' The
对应的代码行是:
expect(assignments(:model))。要成为一个(Mymodel)
您在测试中没有创建任何Mymodel
实例,因此推测Mymodel.find
将返回nil
,这解释了您在编辑(第一个示例)和注释中显示的错误(对于第二个示例)
您在标题和问题正文中显示的
namererror
很可能是由于试图使用赋值(模型)
,以那种方式失败。这是你测试的准确副本/粘贴吗?是的!我试图在eq
和be_a
中添加括号,但我仍然有问题……这次它为nil:NilClass'显示未定义方法
标题“你能显示你的回溯并从你的源代码?MymodelsController位于mymodels_controller.rb文件中的app/controllers/
目录下。对于命名,我只是想看看这是否会有问题,但我得到了相同的错误…我确实遵循了复数约定OK,如果@model
为nil
i,那么这个错误是完全有意义的在控制器上,这就是您将遇到的错误。您的问题指示了namererror
,但是有一条不同的错误消息。您是对的!我错过了相应主题的创建。非常感谢您。namererror
是否来自您尝试分配(模型)的运行
而不是分配(:模型)
?是的,这是可能的!我尝试了分配(模型)
以查看它是否能够解决问题。将来,您可能需要再次检查您共享的输出和代码是否一致。就我而言,我学到了我应该质疑代码和输出,而不仅仅是代码,就像我在最初的评论中所做的那样。我同意!这是因为我在尝试来自在我发布问题时/之后,我会编辑问题标题,使其与当前输出相对应,以避免混淆。
Failures:
1) MymodelsController GET 'show' assigns model should have 'Model-Title' as title
Failure/Error: expect(assigns(:model).title).to eq("Model-Title")
NoMethodError: undefined method title' for nil:NilClass
#./spec/controllers/mymodels_controller_spec.rb:15:in block (3 levels) in <top (required)>' The
2) MymodelsController GET 'show' assigns @model as mymodel
Failure/Error: expect(assigns(:model)).to be_a(Mymodel)
expected nil to be a kind of Mymodel(id: integer, title: string, created_at: datetime, updated_at: datetime)
# ./spec/controllers/mymodels_controller_spec.rb:10:in `block (3 levels) in <top (required)>'