Ben twitter gem kullanarak bir test uygulaması yazıyorum ve bir entegrasyon testi yazmak istiyorum ama Twitter isim alanında nesneleri alay etmek nasıl anlayamıyorum.Bir üçüncü taraf nesnesini ruby ile alaylamanın en iyi yolu nedir?
1) testing oauth twitter
Failure/Error: login_with_oauth
Twitter::Error::Unauthorized:
GET https://api.twitter.com/1/account/verify_credentials.json: 401: Invalid/expired Token
# ./app/models/user.rb:40:in `build_twitter'
# ./app/models/user.rb:16:in `build_authentication'
# ./app/controllers/authentications_controller.rb:47:in `create'
# ./spec/support/integration_spec_helper.rb:3:in `login_with_oauth'
# ./spec/integration/twit_test.rb:16:in `block (2 levels) in <top (required)>'
: Bu hatayı alıyorum,
feature 'testing oauth' do
before(:each) do
@twitter = double("Twitter")
@twitter.stub!(:configure).and_return true
@client = double("Twitter::Client")
@client.stub!(:current_user).and_return(@user)
@user = double("Twitter::User")
@user.stub!(:name).and_return("Tester")
end
scenario 'twitter' do
visit root_path
login_with_oauth
page.should have_content("Pages#home")
end
end
Ama: İşte testine istediğiniz işlev var:
def build_twitter(omniauth)
Twitter.configure do |config|
config.consumer_key = TWITTER_KEY
config.consumer_secret = TWITTER_SECRET
config.oauth_token = omniauth['credentials']['token']
config.oauth_token_secret = omniauth['credentials']['secret']
end
client = Twitter::Client.new
user = client.current_user
self.name = user.name
end
ve burada yazmaya çalışıyorum RSpec testi var
Yukarıdaki alaylar rspec kullanıyor ama ben de mocha'yı denemeye açığım. Herhangi bir yardım büyük takdir edilecektir.
Tamam, bunu herkesin yardımı sayesinde çözmeyi başardım. İşte son test var:
feature 'testing oauth' do
before(:each) do
@client = double("Twitter::Client")
@user = double("Twitter::User")
Twitter.stub!(:configure).and_return true
Twitter::Client.stub!(:new).and_return(@client)
@client.stub!(:current_user).and_return(@user)
@user.stub!(:name).and_return("Tester")
end
scenario 'twitter' do
visit root_path
login_with_oauth
page.should have_content("Pages#home")
end
end
hüner gerçek nesneler üzerinde :configure
ve :new
saplama için gerekli ve bir dobuled nesne örneği :current_user
ve :name
saplama olduğunu bulmaktan.
Evet! Teşekkür ederim. Modelde bir yöntem saplama ve iki katına çıkan bir örneği saplama arasındaki farkı kaçırdığımdan kesinlikle haklısınız. Bu sayede bunu anlayabildim. Sonunda bunu nasıl çözdüğümü dahil etmek için soruyu düzenleyeceğim. – spinlock