0

Ниже приведен тест rspec, который я запускаю, чтобы протестировать другой класс, который я сделал. К сожалению, метод, который я пытаюсь проверить (delete), похоже, не работает. Что меня бросает в том, что сообщение об ошибке я получаю от Termianl является:Rspec говорит, что реализованный метод не реализован

/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

Вы не можете получить доступ к теме, как, что в пределах контекста блока. Вам нужно будет либо поставить его перед блоком, либо в фактический тестовый блок (он/указать):

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 
+0

Извините. Я совершенно новый для Ruby, не могли бы вы привести пример того, что вы имеете в виду в ваш ответ? – NealR

+0

Я сделал ... заметьте, как я завернул строку 'subject.delete' в блок« это »выше. –

+0

AH .. я вижу. Спасибо – NealR

Смежные вопросы