Поэтому мне нужна вспомогательная функция для создания «необработанных твитов», подобно тому, как я могу получать их из драгоценного камня Twitter API, чтобы я мог тестировать функциональность своих моделей при определенных условиях.
Для этого я добавил вспомогательную функцию внутри описания моих объектов, например:
describe Tag, :type => :model do
# Helpers
###
def unprocessed_tweets(count, name, start_date, end_date)
tweets = []
count.times do |index|
tweet = OpenStruct.new
tweet.favorite_count = "3"
tweet.filter_level = "high"
tweet.retweet_count = "12"
tweet.text = "#{name}"
if index == 0
tweet.created_at = start_date
elsif index == (count-1)
tweet.created_at = end_date
else
tweet.created_at = start_date
end
tweets.push tweet
end
tweets
end
Я также добавил тест, чтобы убедиться, что мои помощники работают так, как я ожидаю в долгосрочной перспективе:
it "has a helper for generated unprocessed tweets" do
tag_name = "justin"
start_date = '2015-09-12 2:31:32 0'
end_date = '2015-09-13 2:31:32 0'
tweets = unprocessed_tweets(3, tag_name, start_date, end_date)
expect(tweets.size).to eq 3
expect(tweets.first.favorite_count).to eq "3"
expect(tweets.first.created_at).to eq start_date
expect(tweets.last.created_at).to eq end_date
expect(tweets.last.text).to eq tag_name
end
Это лучшая практика для этого?