gpt4 book ai didi

ruby-on-rails - 设计 View 规范

转载 作者:行者123 更新时间:2023-12-04 06:09:31 25 4
gpt4 key购买 nike

我习惯于编写至少检查以下内容的 View 规范:

expect(view).to receive(:title).with('Required page title here')

(title 是我编写的用于设置页面标题的辅助方法。)现在我正在尝试为我的 Devise View 编写规范,如下所示:

- title 'Lost Password'
.row
.col-lg-6
= form_for resource, as: resource_name, url: password_path(resource_name) do |f|
= render 'layouts/errors', object: resource
.form-group
= f.label :email
= f.text_field :email, class: 'form-control', autofocus: true
= f.submit 'Send me the instructions', class: 'btn btn-primary'
%hr
= render 'devise/shared/links'
.col-lg-6
= render 'devise/shared/advantages'

resourceresource_name 由 Devise 定义。

如果我在 View 上运行以下规范:

require 'rails_helper'
describe 'devise/passwords/new', type: :view do
it 'sets the page title' do
expect(view).to receive(:title).with('Lost Password')
render
end
end

它说:未定义局部变量或方法'resource'。我试过:

allow(view).to receive(:resource).and_return(User.new)

但后来我得到了[snip, long class definition] does not implement: resource

我如何使它起作用?我不想将 Capybara 用于像这样微不足道的事情。

最佳答案

您可以通过在您的测试助手中编写一个简单的实现来自己提供这些助手:

def resource_name
:user
end

def resource
@resource ||= User.new
end

def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end

关于ruby-on-rails - 设计 View 规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com