0

以下は、作成した別のクラスをテストするために実行している rspec テストです。残念ながら、私がテストしようとしている方法 ( delete) は機能していないようです。私を投げているのは、Termianlから取得しているエラーメッセージが次のとおりであることです。

/Users/user/Ruby/localWikiClient/localwiki_client/spec/delete_spec:11:in 'block (2 levels) in <top (required)>': undefined method 'delete' for #<Proc:0x007fe4739a5448> (NoMethodError)

ただし、このメソッドはクラスで定義されています。以下はコードです:

require 'faraday'
require 'json/pure'

module Localwiki

  ##
  # A client that wraps the localwiki api for a given server instance
  #
  class Client

    attr_accessor :hostname       # hostname of the server we'd like to point at
    attr_reader   :site_name      # site resource - display name of wiki
    attr_reader   :time_zone      # site resource - time zone of server, e.g. 'America/Chicago'
    attr_reader   :language_code  # site resource - language code of the server, e.g. 'en-us'

    def initialize hostname, user=nil, apikey=nil
      @hostname = hostname
      @user = user
      @apikey = apikey
      create_connection
      collect_site_details
    end

   ##
   # Get site resource and set instance variables
   #
   def collect_site_details
       site = fetch('site','1')
       @site_name = site['name']
       @time_zone = site['time_zone']
       @language_code = site['language_code']
   end

   ##
   # create Faraday::Connection instance and set @site
   #
   def create_connection
      @site = Faraday.new :url => @hostname
   end

   ##
   # delete a specific resource
   # resources are "site", "page", "user", "file", "map", "tag", "page_tag"
   # identifier is id, pagename, slug, etc.
  def delete(resource,identifier)
    case resource
    when resource == "site"
      @hostname = identifier
      create_connection
    when resouce == "user"
      @hostname = list(identifier)   
    end  

    http_delete()
  end

  def http_delete()
    response = @site.delete
    puts response.to_s
  end

実行しようとしている rspec テストは次のとおりです。

$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
require 'localwiki_client'

describe '<siteinfo>.amazonaws.com/bears' do

  subject { Localwiki::Client.new '<siteinfo>.compute-1.amazonaws.com/bears', '<username>', '[myApiKey]' }

  context '#fetch' do
    subject.delete('page', 'bears')
  end

end
4

1 に答える 1

4

コンテキストブロック内でそのようなサブジェクトにアクセスすることはできません。beforeブロックまたは実際のテストブロック(it / specify)のいずれかに配置する必要があります。

describe '<siteinfo>.amazonaws.com/bears' do

  subject { Localwiki::Client.new '<siteinfo>.compute-1.amazonaws.com/bears', '<username>', '[myApiKey]' }

  context '#fetch' do
    it "deletes the bears page" do
      subject.delete('page', 'bears')
    end
  end

end
于 2013-02-27T04:07:26.230 に答える