저는 Grails의 세계에서 실제로 새로운 것 같습니다. 일부 제약이있는 도메인 클래스에 대한 테스트 사례를 작성하려고합니다. 내 단위 테스트를 실행하려고 할 때 내 개체에 널 포인터 예외가 발생합니다. 디버깅에서 객체가 Null로 설정되도록하는 내 toString 메서드를 사용하여 문제가 있음을 알게되었습니다. 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다. 사전에도메인 클래스 (테스트 제약)에 대한 단위 테스트 케이스 - Grails
import grails.test.mixin.TestFor
import spock.lang.Unroll
import spock.lang.Specification
@TestFor(OrderCharge)
//@TestMixin(GroovyPageUnitTestMixin)
class ChargeSpec extends Specification {
def setup() {
mockForConstraintsTests(
OrderCharge, [
new OrderCharge(order: Mock(SalesOrder),
miscOrderCharges: Mock(MiscOrderCharges),
quantity: 1.0,
price:20.0
/*, sapInvoice: Mock(SapInvoiceRecord) */
)
]
)
}
void validateConstraints(obj, field, error) {
def validated = obj.validate()
if (error && error != 'valid') {
assert !validated
assert obj.errors[field]
assert error == obj.errors[field]
} else {
assert !obj.errors[field]
}
}
@Unroll("test inventory all constraints #field is #error")
def "test Charge all constraints"() {
given:
def obj = new OrderCharge("$field": val)
expect:
validateConstraints(obj, field, error)
where:
error |field |val
'nullable' |'orderCharge' |null
'nullable' |'sapInvoice' |null
'min' |'quantity' |-1
'min' |'price' |0
}
}
감사 :
@MultiTenant
class OrderCharge {
static scaffold = [
exclude: ['tenantId'],
]
static belongsTo = [
order: SalesOrder
]
MiscOrderCharges miscOrderCharges
Date lastUpdated
double quantity
double price
SapInvoiceRecord sapInvoice
static constraints = {
order(nullable: true)
quantity(min:1d)
miscOrderCharges()
sapInvoice(nullable: true)
}
String toString(){
def pattern = "\$##,###.00"
def currency = new DecimalFormat(pattern)
String rate = currency.format(miscOrderCharges.price)
return "$miscOrderCharges x$quantity"
}
}
가 여기 내 단위 테스트 케이스이다 :
여기에 내 도메인 클래스입니다.
예, 곱해질 필요가 있습니다. 곱셈에 astrisk (*)를 사용했지만 여전히 통과 할 수 없습니다. 그래도 답장을 보내 주셔서 감사합니다. 고맙습니다. – Shabih