#rspec :: examplegroups ::: 0x00000101906440>

时间:2015-10-19 21:54:11

标签: ruby methods rspec undefined fizzbuzz

我在2013年开始编写代码,并从中休息并决定从头开始。但是对于我的生活无法得到这个错误。我已经完成了我能想到的一切,但它不需要lib文件中的方法。

这是我的文件夹结构

fizzbuzz
  lib/
    fizzbuzz.rb
spec/
  fizzbuzz_spec.rb
  spec_helper.rb
.rspec

fizzbuzz_spec.rb文件

require "fizzbuzz"

describe "fizzbuzz" do 

  it "tells me that 3 is divisible by 3" do 
    expect(divisible_by_three?(3)).to_eq true
  end

end

继承人fizzbuzz.rb文件

def fizzbuzz

  def divisible_by_three? (number)
    number % 3 ==0
  end

end

是的,我理解它并不是世界上最令人费解的事情。但是我的思绪一片空白,我在这里遇到了麻烦,并在网上搜索并按照教程去做另一种方式,但它似乎从来没有调用过该方法。

我已经

require "fizzbuzz" 
require './lib/fizzbuzz' 
require_relative '../lib/fizzbuzz'

请帮助,谢谢。

亲切的问候,

感恩的开发者。

1 个答案:

答案 0 :(得分:1)

我看到这里有2个问题。在lib/fizzbuzz.rb文件中,方法divisible_by_three?方法包含在另一个方法中。虽然这在技术上是允许的,但如果可以避免这种情况则不可取。相反,请将def fizzbuzz更改为class Fizzbuzz

class Fizzbuzz

  def divisible_by_three? (number)
    number % 3 ==0
  end

end

在spec文件中,require_relative '../lib/fizzbuzz'没问题。但是,要使用该方法(至少在前面的代码片段中定义),您需要使用该类的实例来访问该方法。请参阅下面的代码段。

require_relative '../lib/fizzbuzz'

describe "fizzbuzz" do
  let(:instance) { Fizzbuzz.new }
  it "tells me that 3 is divisible by 3" do
    expect(instance.divisible_by_three?(3)).to eq true
  end

end