![](/img/trans.png)
[英]Call to Query with args [], was not expected in go-sqlmock for compound SQL queries
[英]Using same expected rows for multiple expected queries returns result just for the first one with sqlmock
我在go
中用sqlmock
編寫測試。 我有一個行列表(例如myRows
)和兩個不同的SELECT
語句,我想使用myRows
作為WillReturnRows
參數:
myRows := sqlmock.NewRows([]string{"my_column"}).AddRow(1)
mock.ExpectQuery(firstQuery).WillReturnRows(myRows)
mock.ExpectQuery(secondQuery).WillReturnRows(myRows)
當我在第一個WillReturnRows
使用它時,它返回1
作為結果。 但是在第二次使用中,結果沒有返回任何行; 我的意思是空行返回。 我在第一次調用之前和之后打印了myRows
以檢查它是否已被消耗; 對象沒有變化:
Rows Before: &{[my_column] [[1]] 0 map[] <nil>}
Rows After: &{[my_column] [[1]] 0 map[] <nil>}
編輯1:
我使用了以下代碼並且它有效; 這意味着兩個查詢都返回1
:
myRows1 := sqlmock.NewRows([]string{"my_column"}).AddRow(1)
myRows2 := sqlmock.NewRows([]string{"my_column"}).AddRow(1)
mock.ExpectQuery(firstQuery).WillReturnRows(myRows1)
mock.ExpectQuery(secondQuery).WillReturnRows(myRows2)
快速瀏覽一下源代碼表明該實例不能重用,您必須創建與您期望的選擇查詢一樣多的sqlmock.Rows
實例。 每次您的代碼在sql.Rows
實例上調用Next
時,無論是直接還是間接, sqlmock.Rows
的位置都會增加,因此……第二個查詢沒有更多行要掃描。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.