2012-09-19 47 views
0

我有以下規格:特有的問題:簡單Rspec的規格傳Linux,但不能在Mac OS X

it 'should find and associate thumbnail and video for article with an episode with the first alpha-numerically matching files it finds' do 

    @article = FactoryGirl.create(:pending_assets_article, id: 1) 
    @episode1 = FactoryGirl.create(:episode, topic_id: @topic.id, article_id: @article.id, position: 1) 
    @article.video.should be_nil 
    @article.thumbnail.image.should be_blank 
    @article.state.should == 'pending assets' 

    run_rake_task 

    Delayed::Job.count.should == 2 
... 
end 

奇特的是該規範通過在Ubuntu就好了,但在Mac OS X獅子它失敗,說像expected 2, got 0

什麼給?

我很樂意添加更多的周邊代碼,以提供更多的上下文。

+0

你的Mac上有rmagick設置嗎? – apneadiving

+0

是的,'rmagick'包含在Gemfile中並作爲'bundle'的一部分安裝。 –

回答

0

你是如何調用rake任務的?如果你正在向另一個進程發起攻擊,那麼你可能正在訪問數據存儲中的事務邊界。

您應源/你的rspec的上下文中執行rake任務:

require 'rake' 
Rake::Task[name].invoke 

例如,如果你正在運行的Postgres作爲後端到您DelayedJob隊列和使用數據的事務回滾在rspec的,您在測試設置的一個事務中擁有測試數據,將其發送到rake任務,這會更改事務之外的數據,返回到測試和原始事務,並且無法「看見」數據。

此外,驗證您的代碼是否使用Mock將隊列排列在DelayedJob中並且期望比查詢數據存儲中隊列的大小更簡單。