rspec с методом change, возвращающим неверное количество аргументов 0 для 1 - PullRequest
1 голос
/ 02 февраля 2011

Я пытаюсь выполнить этот тест.

модель

def self.tweet(url)
  Twitter.configure do |config|
    config.consumer_key = APP_CONFIG['twitter_consumer_key']
    config.consumer_secret = APP_CONFIG['twitter_consumer_secret']
    config.oauth_token = APP_CONFIG['twitter_access_token']
    config.oauth_token_secret = APP_CONFIG['twitter_secret_token']
  end    
  shorted_url = shorten_url(url)
  Twitter.update("#{title} - #{shorted_url}")
end

def self.shorten_url(url)
  authorize = UrlShortener::Authorize.new APP_CONFIG['bit_ly_id'], APP_CONFIG['bit_ly_api_key']
  client = UrlShortener::Client.new authorize
  shorten_url = client.shorten(url).urls
end

def publish(url)
  update_attributes(:available => true, :locked => false)
  tweet(url)
end

сейчас, я пытаюсь протестировать последний метод, "опубликовать", но я получаю неправильное количество аргументов ошибкасообщение.

и на тестовой стороне, у меня есть это:

describe Job, "publish" do

  it "should publish a job" do
    @job = Factory(:job)
    @job.publish.should change(Job.available).from(false).to(true)
  end

end

и сообщение об ошибке:

1) Job Job publish should publish a job
     Failure/Error: @job.publish.should change(Job.available).from(false).to(true)
     wrong number of arguments (0 for 1)
     # ./app/models/job.rb:60:in `publish'
     # ./spec/models/job_spec.rb:128:in `block (3 levels) in <top (required)>'

Finished in 1.12 seconds
47 examples, 1 failure, 4 pending

Цените любую помощь!

Спасибо!

1 Ответ

3 голосов
/ 02 февраля 2011

Попробуйте поместить его в лямбду:

lambda { @job.publish }.should change(Job.available).from(false).to(true)

Кроме того, я не уверен, так как я не могу видеть весь код вашей Модели, но вы хотели использовать @job.available вместо Job.available?

Редактировать : Вам может понадобиться использовать этот формат:

lambda { @job.publish }.should change(@job, :available).from(false).to(true)
...