Ich versuche, Unit-Test zu implementieren, was mein Test wie folgt aussieht:In Spock Unit-Test verspottet Methode wird aufgerufen, dies ist mit <a href="http://spockframework.org/" rel="nofollow noreferrer">Spock framework</a> nicht werden
def setup() {
scrollableResultsMock = Mock(ScrollableResults)
paymentRepositoryMock = Mock(PaymentRepository)
paymentRegistryService = new PaymentRegistryService(paymentRepositoryMock)
}
@Unroll
def 'should correctly process'() {
given:
paymentRepositoryMock.findUnconfirmedTransactions(_ as LocalDate, _ as Days) >> scrollableResultsMock
...
}
Hier Klasse ist, in dem ich versuche, verspottet einzuspritzen Objekt:
@Service
open class PaymentRegistryService
@Autowired
constructor(
val paymentRepository: PaymentRepository
) {
@Transactional
open fun parseRegistryFileStream(input: InputStream): LinkedList<Pair<Long, String>> {
...
val registry = paymentRepository.findUnconfirmedTransactions(start, PERIOD)
...
}
}
Während Test läuft statt Aufruf meine Methode echte paymentRepository
Methode aufgerufen wird. Ich verstehe nicht, was der Grund sein könnte. LocalDate
und Days
sind von Joda time und schließlich das ist paymentRepository
Klasse:
@Repository
@Transactional
open class PaymentRepository : AbstractRepository<Payment, Long>(Payment::class.java) {
fun findUnconfirmedTransactions(start: LocalDate, days: Days): ScrollableResults = criteria().add(
and(
eq("isConfirmed", false),
ge("transactionDateTime", start),
lt("transactionDateTime", start.plus(days))
)).setCacheMode(CacheMode.IGNORE).scroll(ScrollMode.FORWARD_ONLY)
}
Bevor diese schnelle Antwort kam, wollte ich das Problem reproduzieren und bemerkte, dass Ihr Beispielcode nicht zeigt, wie die Mock-Methode im Test aufgerufen wird. Also musste ich daran denken, was nicht nett ist. Das nächste Mal beschreibe bitte auch, wie du etwas verwendest, nicht nur wie du es deklarierst. '...' ist hier nicht sehr hilfreich. – kriegaex
Vielen Dank für Ihre Bemerkung. Ich werde versuchen, es in meinen Fragen vorherzusehen, aber Sie hätten nur fragen können und ich hätte diesen Teil des Codes zu meiner Frage hinzugefügt. – GROX13