簡體   English   中英

Groovy /模擬SQL

[英]Groovy / Mocking Sql

我正在嘗試通過以下方式在Groovy中模擬Sql實例,我正在使用spock框架進行測試。 但是測試失敗,請參見以下內容:

class SQLStatsStorageManagerTest extends Specification {
    def mockSql

    def setup() {

        mockSql = GroovyMock(Sql, global: true)
    }

    void "SQLStatsStorageManager instantiation succeed"() {
        def c

        when: "SQLStatsStorageManager is instantiated"
            c = new SQLStatsStorageManager("test", [hostname: "localhost", port: 666, database: "db", login: "root", password: "pass"])

        then: "there is no error and name is set"
            1 * mockSql.newInstance('jdbc:mysql://localhost:666/db', 'root', 'pass', 'com.mysql.jdbc.Driver')
            assert c.getName() == "test"
    }
}

測試失敗,並出現以下錯誤:

Too few invocations for:

1 * mockSql.newInstance('jdbc:mysql://localhost:666/db', 'root', 'pass', 'com.mysql.jdbc.Driver')   (0 invocations)

Unmatched invocations (ordered by similarity):

1 * mockSql.newInstance(jdbc:mysql://localhost:666/db, 'root', 'pass', 'com.mysql.jdbc.Driver')

任何想法 ?

謝謝。

請注意,唯一不匹配的參數是db link。

您嘗試將其驗證為String的實例:

'jdbc:mysql://localhost:666/db'

但在無與倫比的調用中,它是:

jdbc:mysql://localhost:666/db

所以這是問題,實際上是什么? 驗證類型,即可解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM