简体   繁体   中英

How to call module in Ruby rspec?

lib/rspec/core/my_methods.rb

module MyLovelyModule

class My_methods

  def my_lovely_method
    save_world

    config.to_prepare do
      Dir.glob(Rails.root + "../simpleRspec/dummy_classes.rb").each do |c|
        require_dependency(c)
      end
  end
end
end
  end

lib/simpleRspec/dummy_classes.rb

describe MyLovelyModule do

class DummyClasses

  before(:all) do
    @dummy = DummyClasses.new
    @dummy.extend MyLovelyModule
  end

  describe "MyLovelyModule" do
    it "saves the world" do
      expect {
        @dummy.my_lovely_method
      }.to raise_error MeltDownException
    end
  end
end
end

I got a error like that:-

C:/Users/afzala/RubymineProjects/simpleRspec/lib/simpleRspec/dummy_classes.rb:2:in `<top (required)>': uninitialized constant MyLovelyModule (NameError)
    from -e:1:in `load'
    from -e:1:in `<main>'

Process finished with exit code 1

could anyone please help me out for this issue

You need to load your module first. You also need to close the class before you define tests:

require 'lib/rspec/core/my_methods.rb'

describe MyLovelyModule do

  class DummyClasses
  end

  before(:all) do
    @dummy = DummyClasses.new
    @dummy.extend MyLovelyModule
  end

  describe "MyLovelyModule" do
    it "saves the world" do
      expect {
        @dummy.my_lovely_method
      }.to raise_error MeltDownException
    end
  end
end

Also you will not be able to access @dummy in your test. You need to use before(:each) in place of before(:all)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM