私はGrailsの世界では実際に新しいです。私はいくつかの制約があるドメインクラスのテストケースを記述しようとしています。私は私のユニットテストを実行しようとしているときに私のオブジェクトにNULLポインターの例外が表示されます。デバッグでは、オブジェクトを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