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

당신은 상황에 맞는 블록 내에서 같은 주제에 액세스 할 수 없습니다. 이전 블록이나 실제 테스트 블록 (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 
+0

죄송합니다 .. 저는 Ruby의 새로운 제품입니다. 여러분이 의미하는 바의 예를 포함시킬 수 있습니까? 너의 답? – NealR

+0

나는 어떻게 위의 "it"블록에'subject.delete' 줄을 싸는 지 알아 챘다. –

+0

아하 .. 알았어. 고맙습니다 – NealR

관련 문제