以下は、作成した別のクラスをテストするために実行している 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