Può spock finte classi finali? Se é cosi, come? I risultati della ricerca hanno portato questo gist, che sembrerebbe implicare così, ma non riesco a trovare alcun esempio di farlo. Ho anche trovato post sul forum che dicono che il mocking delle classi finali non è supportato.Mock final class in Spock
6
A
risposta
14
Questa specifica:
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('cglib:cglib-nodep:3.1')
import spock.lang.*
class Test extends Specification {
def 'lol'() {
given:
def s = Mock(String) {
size() >> 10
}
expect:
s.size() == 10
}
}
termina con la seguente eccezione:
JUnit 4 Runner, Tests: 1, Failures: 1, Time: 29 Test Failure:
lol(Test) org.spockframework.mock.CannotCreateMockException:
Cannot create mock for class java.lang.String because Java mocks cannot mock final classes.
If the code under test is written in Groovy, use Groovy mock.
La soluzione è quella di utilizzare GroovyMock
:
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('cglib:cglib-nodep:3.1')
import spock.lang.*
class Test extends Specification {
def 'lol'() {
given:
def s = GroovyMock(String) {
size() >> 10
}
expect:
s.size() == 10
}
}
che funziona bene.
+0
Qualche idea sul perché questo non funzioni per String.length()? –
+0
La differenza con String.length() può essere dovuta al fatto che è definita sulla classe String di Java, non sulla versione di Groovy? Questa [risposta] (http://stackoverflow.com/a/12177035/369722) sembra suggerire così. –
Problemi correlati
- 1. @ Mock/@ InjectMocks per Groovy - Spock
- 2. Spock mock per Akka's ActorRef
- 3. Come posso prendere in giro in modo efficiente un'interfaccia fluida con Spock Mock?
- 4. Come creare Spock mock al di fuori di una classe di specifiche?
- 5. Grails Spock test Controller e il servizio
- 6. Metodo statico simulato con GroovyMock o simile in Spock
- 7. "public static final" o "private static final" con getter?
- 8. Verifica semplice di Mockito funziona in JUnit ma non in Spock
- 9. Verificare che non siano state generate eccezioni in Spock
- 10. Classe Mock in prova
- 11. C# readonly vs Java final
- 12. String e Final
- 13. Grails Test con Spock: quale quadro di simulazione selezionare?
- 14. È possibile che PHPUnit Mock Object sostituisca un Created in Class?
- 15. C'è un modo per fare l'argomento fittizio catturare in Spock
- 16. Object [] per Class [] in Java
- 17. Utilizzo di Spock per deridere le variabili finali statiche private in Java
- 18. unit test spock loop in poi clausola
- 19. Spock senza software o gradle
- 20. Spock che verifica un'eccezione generata da simulazione con interazione simulata
- 21. Spock - valore restituendo fisso non funziona come previsto
- 22. Python 2.6: Class in a Class?
- 23. Mock Runtime.getRuntime()?
- 24. C++ equivalente per dati membro java final
- 25. Mock Networkstream.Read
- 26. Test unità Groovy2.0 con Spock: setup()
- 27. Mock un campo statico privato con JMockit?
- 28. Come testare il servizio Grails usando Spock?
- 29. Mock AsNoTracking Entity Framework
- 30. Mock system call in ruby
A volte, con Groovy è meglio fare un tentativo. – cjstehno
@cjstehno Ho provato e ottenuto un'eccezione. Ma ho pensato che forse c'è un modo speciale di farlo che non conosco. –
La mia risposta risolve il problema? – Opal