Ruby on rails 示例使用未定义的方法'model_name';对于RSpec::Mocks::Mock:Class和Failure/Error:Bookmark.should_receive(:new)

Ruby on rails 示例使用未定义的方法'model_name';对于RSpec::Mocks::Mock:Class和Failure/Error:Bookmark.should_receive(:new),ruby-on-rails,mongodb,rspec,devise,Ruby On Rails,Mongodb,Rspec,Devise,你好,我不知道为什么这些测试失败了。这是一本“专家”德语书中的例子 也许有人能帮我。。。。 谢谢 关于收到:0次,有任何参数 您使用的方法通常用于“验收”测试,而不是控制器测试。我不知道这种方法在这种情况下起什么作用。我想你应该在post 关于RSpec::Mocks::Mock:Class的未定义方法“model_name” 你的存根Bookmark.stub(:new.)和返回(@Bookmark)其中@Bookmark=double(Bookmark)-这意味着@Bookmark不是Bo

你好,我不知道为什么这些测试失败了。这是一本“专家”德语书中的例子 也许有人能帮我。。。。

谢谢

  • 关于
    收到:0次,有任何参数
    您使用的方法通常用于“验收”测试,而不是控制器测试。我不知道这种方法在这种情况下起什么作用。我想你应该在
    post

  • 关于RSpec::Mocks::Mock:Class的未定义方法“model_name” 你的存根
    Bookmark.stub(:new.)和返回(@Bookmark)
    其中
    @Bookmark=double(Bookmark)
    -这意味着
    @Bookmark
    不是
    Bookmark
    的实例,而是
    RSpec::Mocks::Mock:Class
    的实例。 当操作
    create
    开始工作时,它会尝试保存记录。方法
    save
    返回false(您将其存根),并再次呈现视图
    new
    。此页面包含基于
    @bookmark
    的表单,该表单调用
    model\u name
    。 可能的解决方案:使用
    @bookmark=bookmark.new


  • 您好@gotva,我将
    visit
    更改为
    post
    ,在bookmarkscontroller中,我将新方法
    @bookmark=bookmark.new(params[:bookmark])更改为@bookmark=bookmark.new,但我得到了。也许我想念你。你是对的(我希望)。问题在于这个。为此,您应该在
    @bookmark=bookmark.new上更改
    @bookmark=double(bookmark)