2012-03-09 5 views
0

У меня есть следующий простой класс и HTTParty метод:Как проверить этот код с RSpec?

class Token 
    require 'httparty' 

    include HTTParty 
    base_uri 'https://<some url>' 
    headers 'auth_user' => 'user' 
    headers 'auth_pass' => 'password' 
    headers 'auth_appkey' => 'app_key' 

    def self.getToken 
    response = get('/auth/token') 
    @token = response['auth']['token'] 
    end 
end 

Я знаю, что это работает потому что я могу вызвать метод в консоли Rails и успешно получить маркер обратно.

Как я могу проверить вышеуказанный код в RSpec?

Мой первоначальный удар у него не работает:

describe Token do 
    before do 
    HTTParty.base_uri 'https://<some url>' 
    HTTParty.headers 'auth_user' => 'user' 
    HTTParty.headers 'auth_pass' => 'password' 
    HTTParty.headers 'auth_appkey' => 'app_key' 
    end 

    it "gets a token" do 
    HTTParty.get('auth/authenticate') 
    response['auth']['token'].should_not be_nil 
    end 
end 

Он говорит: NoMethodError: undefined method 'base_uri' for HTTParty:Module ...

Спасибо!

+0

Что вы хотите протестировать, сервер или этот (очень тонкий) клиент? –

+0

Я хочу протестировать клиента. Это только первый метод, который я написал для использования веб-службы. Я хочу написать тест для него, прежде чем добавлять больше, но не знаю, какой синтаксис использовать. –

ответ

1

Поскольку вы тестируете модуль, который вы могли бы попробовать что-то вроде этого:

describe Token do 
    before do 
     @a_class = Class.new do 
     include HTTParty 
     base_uri 'https://<some url>' 
     headers 'auth_user' => 'user' 
     headers 'auth_pass' => 'password' 
     headers 'auth_appkey' => 'app_key' 
     end 
    end 

    it "gets a token" do 
     response = @a_class.get('auth/authenticate') 
     response['auth']['token'].should_not be_nil 
    end 
end 

Это создает анонимный класс и расширяет его с методами класса HTTPparty «s. Тем не менее, я не уверен, что ответ вернется, как у вас есть.

+0

Я сделал небольшую коррекцию, которая прошла тест. Спасибо за вашу помощь! –