簡體   English   中英

Rspec描述NameError未初始化的常量范圍

[英]Rspec describe NameError uninitialized constant scope

我正在獲取NameError未初始化的常量,如下所示:

Failures:

  1) Direction turn right faced south rotates to west
     Failure/Error: expect(Move.right(Direction::South)).to eq(Direction::West)
     NameError:
       uninitialized constant Move
     # ./spec/unit_tests/direction_spec.rb:11:in `block (4 levels) in <top (required)>'

  2) Direction turn right faced west rotates to north
     Failure/Error: expect(Move.right(Direction::West)).to eq(Direction::North)
     NameError:
       uninitialized constant Move
     # ./spec/unit_tests/direction_spec.rb:16:in `block (4 levels) in <top (required)>'

  3) Direction turn right faced north rotates to east
     Failure/Error: expect(Move.right(Direction::North)).to eq(Direction::East)
     NameError:
       uninitialized constant Move
     # ./spec/unit_tests/direction_spec.rb:21:in `block (4 levels) in <top (required)>'

  4) Direction turn right faced east rotates to south
     Failure/Error: expect(Move.right(Direction::East)).to eq(Direction::South)
     NameError:
       uninitialized constant Move
     # ./spec/unit_tests/direction_spec.rb:26:in `block (4 levels) in <top (required)>'

Finished in 0.02345 seconds
14 examples, 4 failures

這是我的代碼:

require_relative '../spec_helper'
require 'direction'

describe Direction do

    subject(:Move) { Direction::Move.new }

    describe 'turn right' do
        context 'faced south' do
            it 'rotates to west' do
                expect(Move.right(Direction::South)).to eq(Direction::West)
            end
        end
        context 'faced west' do
            it 'rotates to north' do
                expect(Move.right(Direction::West)).to eq(Direction::North)
            end
        end
        context 'faced north' do
            it 'rotates to east' do
                expect(Move.right(Direction::North)).to eq(Direction::East)
            end
        end
        context 'faced east' do
            it 'rotates to south' do
                expect(Move.right(Direction::East)).to eq(Direction::South)
            end
        end
    end
end

主題不起作用的原因是什么? 我也試着let但這也不管用

您必須使用小寫的主題名稱

subject(:move) { Direction::Move.new }

如果要將Move解釋為方法調用,則需要添加接收器或參數列表。 即你需要使用其中之一

expect(self.Move.right(Direction::South)).to eq(Direction::West)

要么

expect(Move().right(Direction::South)).to eq(Direction::West)

否則,它將被解釋為取消引用常量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM