我在節點項目中使用mysql。node.js上的單元測試mysql回滾
我想單元測試一個使sql事務的javascript函數。如果事務成爲鎖定監視器的受害者,則該函數具有處理失敗的代碼。
還是呢?
因爲我是單元測試,所以我只在一個本地數據庫上一次創建一個事務,所以永遠不會出現死鎖,對吧?我如何測試死鎖處理,如果它永遠不會發生?有沒有辦法強制它發生?
例子:
thisMustBeDoneBeforeTheQuery();
connection.queryAsync(/*This is an update*/).catch(function(err) {
undoThatStuffIDidBeforeTheQuery();
// I hope that function worked, because my unit tests can't
// make a deadlock happen, so I can't know for sure.
}
你應該嘲笑數據庫的東西,並在測試案例假死鎖錯誤。然後你可以測試你的錯誤代碼的有效性。這取決於你的用例。處理持久層的單元測試可能變得非常不安全。這也取決於你的代碼如何適合正確的測試策略。 – k0pernikus
相關:https://stackoverflow.com/questions/8389149/how-do-you-mock-mysql-without-an-orm-in-node-js – k0pernikus
它似乎嘲笑SQL可能工作。我會試一試。 –