【问题标题】:example fails with undefined method `model_name' for RSpec::Mocks::Mock:Class and Failure/Error: Bookmark.should_receive(:new)示例因 RSpec::Mocks::Mock:Class 和失败/错误的未定义方法“model_name”而失败:Bookmark.should_receive(:new)
【发布时间】:2014-08-14 23:38:53
【问题描述】:

您好,我不知道为什么这些测试会失败。这是一本“专家”德语书中的例子 也许有人可以帮助我.... https://github.com/AGERECKE/Rails-Book-Project http://pastebin.com/q4kS59ek

谢谢

【问题讨论】:

    标签: ruby-on-rails mongodb rspec devise


    【解决方案1】:
    1. 关于received: 0 times with any arguments 您使用方法visit,它通常用于“验收”测试而不是控制器测试。我不知道这种方法在这种情况下会做什么。我认为你应该在 post

    2. 上更改它
    3. 关于undefined method 'model_name' for RSpec::Mocks::Mock:Class 你存根 Bookmark.stub(:new).and_return(@bookmark) 其中@bookmark = double(Bookmark) - 这意味着@bookmark 不是Bookmark 的实例,它是RSpec::Mocks::Mock:Class 的实例。 当操作create 开始工作时,它会尝试保存记录。方法 save 返回 false(它被你存根)并且视图 new 再次呈现。此页面包含基于@bookmark 的表单,该表单调用model_name。 可能的解决方案:使用@bookmark = Bookmark.new

    【讨论】:

    • 嗨@gotva,我将visit 更改为post,在书签控制器中我更改了新方法@bookmark = Bookmark.new(params[:bookmark]) to @bookmark = Bookmark.new,但我得到了link。也许我想念理解你。
    • 你的控制器是正确的(我希望)。问题在于这个stub。对于这个describe,你应该在@bookmark = Bookmark.new上更改@bookmark = double(Bookmark)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2019-05-13
    相关资源
    最近更新 更多