Genel kural yazdığım şeyi test etmektir. Bu nedenle, eğer özel yöntemler (veya kapaklar) yazarsam, o zaman bunları test ederim. Bu kural ayrıca, kısıtlamaları yazdığımdan beri kısıtlamaları test edeceğim anlamına gelir. Bunun için GrailsUnitTestCase içinde mockForConstraintsTests() yöntemini kullanıyorum.
bir örnek kısıtlamaları engellemek:
static constraints = {
location(blank:true, nullable:true)
make(blank:false, nullable:false)
name(blank:false, nullable:false)
serviceTag(nullable:true)
purchaseDate(blank:false, nullable:false)
checkedDate(blank:false, nullable:false)
warrantyExpirationDate(nullable:true)
notes(blank:true, nullable:true)
}
aşağıdaki kısıtlamalar birim testi olurdu:
void test_null_constraints_are_checked() {
mockForConstraintsTests(Hardware)
def hardware = new Hardware()
assertFalse hardware.validate()
assertEquals 4, hardware.errors.getFieldErrorCount()
assertEquals "nullable", hardware.errors["name"]
assertEquals "nullable", hardware.errors["checkedDate"]
assertEquals "nullable", hardware.errors["purchaseDate"]
assertEquals "nullable", hardware.errors["make"]
}
Bu hemen benim kısıtlamaları üzerinde yazım hatasıyla yakalayacak.
Alanda kaydetme, oluşturma, güncelleme ve silmeyi sınamıyorum; Eğer bunlar başarısız olursa o zaman daha büyük problemlerim var!
Hiç ilişkilerini 1-M vb. Test eder misiniz? –
Onları doğrudan ünitede denediğimi söyleyemem. Genellikle onları entegrasyon düzeyinde alırım. – zentuit