Hier ist mein Test-Klasse:SPOCK - Alle @Shared Variablen sind NULL
import grails.test.mixin.*
import spock.lang.Specification
import spock.lang.Unroll
import spock.lang.*
import groovy.util.logging.Slf4j
@Slf4j
@Mock([PromoRule, PromoCode, SecUser])
@TestFor(PromoService)
class PromoServiceSpec extends Specification {
@Shared testUser
@Shared testCode
@Shared testRule
def setup() {
}
@Unroll
def 'valid promo codes - #user, #code'() {
given:
testRule = new PromoRule(
name : "ZTEST",
receiverAmount : 5,
receiverAmountType : PromoRule.AmountType.DOLLARS,
senderAmount : 0,
senderAmountType : PromoRule.AmountType.DOLLARS,
receiverPointsAmount : null,
receiverPointsAmountType : null,
receiverMaxUse : null,
)
testRule.save(flush:true, failOnError:true)
testUser = new SecUser(
id: 1,
version: 0,
accountExpired: false,
accountLocked: false,
age: 9000,
balance: 100,
dateCreated: new Date(),
emailVerified: true,
enabled: true,
firstName: 'Sir',
lastName: 'Buttocks',
lastUpdated: new Date(),
lockedBalance: 0,
username: "1",
staff: false,
displayName: 'sir_buttocks',
usernameChosen: true,
depositMade: true,
depositOfferRecentlySeen: false,
pin: null
)
testUser.save(flush: true, failOnError: true)
testCode = new PromoCode(
rule : testRule,
code : "3",
senderId : 1,
)
testCode.save(flush:true, failOnError:true)
expect:
service.isValidPromoCode(user, code) == value
where:
user | code || value
testUser | testCode || true
}
}
Wenn ich diesen Test ausführen, bekomme ich die folgende:
| Failure: valid promo codes - null, null(skillz.PromoServiceSpec)
| Condition not satisfied:
service.isValidPromoCode(user, code) == value
| | | | | |
| false null null | true
[email protected] false
Ich habe versucht, Eine Menge verschiedener Konfigurationen und Layouts, die mir entweder eine Null-Zeiger-Ausnahme (für die Variable selbst) oder einen Null-Wert für die Variable liefern.
Alle Definitionen unter static
Variablen haben auch nichts geändert, das gleiche Ergebnis wie mit @Shared
.
Ich habe versucht, diese auch spöttisch, aber ich habe immer null Ausnahmen beim Versuch .Mock() für die Klasse ...
Dank ausführen !!
Haben Sie auch '@Shared def testUser' probiert? Mit 'def'. – dmahapatro
Ja, keine Liebe macht das. – ChronaldMcDonald