首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么RSpecMatchers#have_title返回代码是绿色的?在我的产品里

为什么RSpecMatchers#have_title返回代码是绿色的?在我的产品里
EN

Stack Overflow用户
提问于 2020-02-23 12:34:35
回答 2查看 80关注 0票数 1

我预期这段代码会返回红色,因为视图的标题部分计算为"Home \ Rails教程示例应用程序“。但事实上,格林被归还了。另一方面,规范所期望的视图的标题部分是“Rails教程示例应用程序”。我不知道为什么会这样。

application.html.haml是常见的布局。

代码语言:javascript
代码运行次数:0
运行
复制
!!! 5
%html
  %head
    %title 
      = full_title(yield(:title))
    = csrf_meta_tags
    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
    = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
  %body
    = yield

home.html.haml是视图内容

代码语言:javascript
代码运行次数:0
运行
复制
= provide(:title, "Home")
%h1 Sample App
%p
  This is the home page for the
  %a{href: 'https://railstutorial.jp/'} Ruby on Rails Tutorial
  sample application.
代码语言:javascript
代码运行次数:0
运行
复制
module ApplicationHelper
  def full_title(page_title = '')
    base_title = 'Ruby on Rails Tutorial Sample App'
    base_title if page_title.empty?

    page_title + ' | ' + base_title
  end
end

规范代码

代码语言:javascript
代码运行次数:0
运行
复制
RSpec.describe 'static_controller', type: :system do
  before do
    @base_title = 'Ruby on Rails Tutorial Sample App'
  end
  describe 'Home' do
    it 'check title' do
      visit root_url
      expect(page).to have_title @base_title.to_s
    end
  end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-23 13:32:24

凯巴拉RSpec matcher #have_title使用的是凯巴拉的#assert_title罩下(来源)。

来自博士

#assert_title(字符串,**选项)⇒true 参数:

  • string (String) -标题应该包括的字符串

注意,意思是“包括”。如果你想要一个精确的匹配,那就有一个选择。从医生那里:

(****options**): 选项哈希

  • :exact (Boolean) -默认:false -当传递一个字符串时,匹配应该是精确的,或者只是子字符串。

由于RSpec匹配器只是将选项传递给这个#assert_title方法,所以您应该能够按如下方式编写期望(不需要#to_s,因为@base_title是一个字符串):

代码语言:javascript
代码运行次数:0
运行
复制
expect(page).to have_title(@base_title, exact: true)
票数 0
EN

Stack Overflow用户

发布于 2020-02-23 13:29:38

这是因为have_title的默认行为是执行子字符串匹配- 标题%3F

如果你想要一个精确的匹配,通过exact: true

expect(页面).to have_title(@base_title.to_s,确切: true)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60362233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档