0
に私はgroovy.sql.SqlにnewInstance()
とcall()
を模擬しようとしている:)グルーヴィーなユニットテスト
package com.sample
import grails.test.GrailsUnitTestCase
import groovy.mock.interceptor.MockFor
import groovy.sql.Sql
class MySampleTests extends GrailsUnitTestCase {
void testThat_SqlCall_IsInvokedWithexpectedQuery() {
def mockSql = new MockFor(Sql.class)
mockSql.demand.newInstance { def datasource->
return mockSql
}
mockSql.demand.call { def sql ->
return 0
}
mockSql.use {
MySample targetObject = new MySample()
targetObject.myMethod()
}
}
}
:
groovy.lang.MissingMethodException: No signature of method: groovy.mock.interceptor.MockFor.call() is applicable for argument types: (java.lang.String) values: [test]
エラーが嘲笑されていない()メソッドの呼び出しのように思われてしまう:
package com.sample
import groovy.sql.Sql
class MySample {
def dataSource
def myMethod() {
def conn = Sql.newInstance(dataSource)
conn.call("test")
}
}
それはでてERRS。それは事実ですか?それのための修正は何ですか?
私はここで最も適切な欠落データを考えている:(A)あなたはどのようなユニットテストフレームワークを使用していますか?そして(B)あなたはどんな模造図書館を使っていますか?それ以降はもっと質問があるかもしれませんが、そこから始めましょう。 – BalRog
@BalRog - 私はmockForを使って嘲笑しています。ドキュメントによれば、追加の模擬ライブラリは必要ありません。そうでない場合は教えてください。ユニットテストフレームワークに関する限り、検証コードが存在しなくてもこの例が失敗するので、この質問が重要であるかどうかはわかりません。 –
いいえ、私はすべてのカウントで正しいと思います。これは明らかに私がよく知らないGroovy APIの多くの部分の1つです。 – BalRog