我是新來的RSpec的,我敢肯定有一個更簡單的方法做我想做的模型:導軌 - 測試使用從複製
我想測試我的車型之一 - 「UserStatuses。 RB」。 每個測試都在一個事務中運行。 所以我定義:
config.use_transactional_fixtures = true
我寫的每個測試之前運行的東西:
describe "UsersStatuses" , type: :model, :focus => true do
before(:each) do
UsersStatuses.delete_all
user_status = UserStatus.new()
user_status.save
end
我寫的測試後,右側的 '前'(裏面的描述):
it "Get items"
res = UserStatuses.func()
expect(res.length).to eq(1)
end
...
end
UserStatuses中的func方法是:
def func
return using(:slave).connection.select_rows("SELECT id FROM user_statuses")
end
當我運行測試時,它失敗。 從我看到的 - 從func返回的行,與之前在'before'部分中刪除它們之前的數據相同。 但是當我在use_transactional_fixtures = false的時候運行測試,它會起作用('before'中的數據被保存並且以func的形式返回)。
我的猜測是,在事務模式 - user_status.save發生在'before'之前,它提交給DB,也提交給slave。因此,'之前'中所做的任何更改都適用於從屬設備,並且func會返回所需的內容。 但我不確定。
有什麼辦法可以將更改應用於從屬?
不知道是否在您的文章或代碼一個錯字,但你'except',而不是'expect' –
@PaulFrench錯字在我的代碼,謝謝! 但我仍然有問題。 B.T.W, 使用(:奴隸)是從章魚寶石。 – McMendel