2014-05-21 1 views
0

J'utilise la version Grails 2.3.6. J'ai deux classe de domaine comme ci-dessousTests unitaires de gravier fonctionnant différemment

class Profile { 

    String name 

    static belongsTo = Student 
} 


class Student { 
Profile profile 
Integer enrolmentNumber 
} 

J'essaye de créer un à un rapport unidirectionnel. Le problème est que j'ai écrit un cas de test unitaire

@TestFor(Student) 
@Mock([Profile,Student]) 
class StudentSpec extends Specification { 

void "test save Student"() { 
    when :"Student details" 
    Profile profile = new Profile(name:"Test") 
    Student student = new Student(enrolmentNumber: 10,profile:profile) 

    then : " Student should be saved" 
    assertNotNull(student.save(flush: true)) 
    assertNotNull(profile.id) 

    when:"When I delete the student" 
    student.delete() 

    then:"Profile should also deleted" 
    assertNull Profile.findById(profile.id) 
} 
} 

test échoue à la dernière ligne « Profile.findById (profile.id) » profil dire se trouve. Selon ma compréhension quand j'ai "belongsTo" alors la cascade devrait se produire, je veux dire quand je supprime l'étudiant, le profil devrait également être supprimer. Mais ça ne se passe pas. Au lieu de créer un test unitaire, j'ai utilisé le même code dans le test d'intégration, il fonctionne correctement.

Je ne sais pas ce que je fais mal. Ou ma compréhension est fausse.

Répondre

0

Essayez

student.delete(flush:true) 
+0

Non, ce ne fonctionne pas. Je reçois la même erreur en disant "Attendu: mais était: Profil: 1" – vicky