Ruby on rails 使用rspec失败测试(映射程序)是否会导致错误?

Ruby on rails 使用rspec失败测试(映射程序)是否会导致错误?,ruby-on-rails,ruby,rspec,railstutorial.org,Ruby On Rails,Ruby,Rspec,Railstutorial.org,注意:我正在学习RubyonRails的教程,因此我是一个彻头彻尾的noob 基本上,在我下面的教程中,它向您展示了如何进行在进行过程中遇到的失败测试,如程序的检查表。我的问题是,当我进行测试时,它会输出它应该输出的内容,但会出现错误,这是不好的(我认为),因为它与指令的输出不匹配 输出:(如下所示) 输出 Failures: 1) Static pages Home page should have the content 'Sample App' ←[31mFailure/E

注意:我正在学习RubyonRails的教程,因此我是一个彻头彻尾的noob

基本上,在我下面的教程中,它向您展示了如何进行在进行过程中遇到的失败测试,如程序的检查表。我的问题是,当我进行测试时,它会输出它应该输出的内容,但会出现错误,这是不好的(我认为),因为它与指令的输出不匹配

输出:(如下所示)

输出

Failures:

  1) Static pages Home page should have the content 'Sample App'
     ←[31mFailure/Error:←[0m ←[31mexpect(page).to have_content('Sample App')←[0m

       ←[31mexpected #has_content?("Sample App") to return true, got false←[0m
←[36m     # ./spec/requests/static_pages_spec.rb:9:in `block (3 levels) in <top
(required)>'←[0m

Finished in 0.07 seconds
←[31m1 example, 1 failure←[0m

Failed examples:

←[31mrspec ./spec/requests/static_pages_spec.rb:7←[0m ←[36m# Static pages Home p
age should have the content 'Sample App'←[0m

Randomized with seed 10853   

除了额外的控制代码(可能只是控制台或剪切粘贴的症状),这看起来像是正常的测试失败。如果您先编写了测试,您应该会想到这一点

TDD的一个重要部分实际上是获得一个简单的失败测试-这种失败(have_contentmatcher未能匹配)然后“修复”失败

测试代码也可能出现问题,当然也需要修复。但在这种情况下,我看你的测试没有任何问题

如果测试出了问题,那么在阅读代码时,您必须以更传统的方式应用批判性思维和经验对其进行调试。因此,尽量保持测试代码简单,切中要害。将长而复杂的测试分解为许多短而小的测试


可能可以改进
have_content
匹配器以提供更好的上下文,而不是进行您不知道的子测试。这是别人写的,还不错,它仍然有一定的意义(目标页面上可能根本没有内容)。

你能不能不在这里添加代码?我不明白这个问题,因为我看不到“指令输出”。我们也不知道你使用的任何东西的版本,你遵循的教程,等等。简而言之,现在还没有什么要做的。虽然这是一个很好的建议,但他正在遵循一个特定的教程并进行一次失败的测试。@Sevensacat:我认为OP正在遵循TDD,并且还没有实现正在测试的功能。我没有。本教程目前正在教授TDD,因此错误是正常的。我只是看到了一个不同的输出,想知道到底出了什么问题。顺便问一下,有没有办法省略控制代码?这是我正在使用的命令=>bundle exec rspec spec/requests/static\u pages\u spec。rb@user3029002:我认为控制代码是颜色控制,您可以通过执行
bundle exec rspec--no color spec/requests/static_pages_spec.rb
-也可以为rspec设置一个默认选项,其中包含
-c
--color
-删除该选项也会删除颜色代码。您还可以研究在终端上支持ANSI颜色代码需要什么(我猜是Windows cmd?),我在Windows 7上使用git bash。
require 'spec_helper'

describe "Static pages" do

  describe "Home page" do

    it "should have the content 'Sample App'" do
      visit '/static_pages/home'
      expect(page).to have_content('Sample App')
    end
  end
end