import grails.plugin.spock.*
class EventControllerSpec extends ControllerSpec {
def "Creating a breadcrumb from an event"() {
given: "I have a named event"
def eventController = Mock(EventController)
def event = Mock(Event)
event.title >> 'Space-Journey with Sprock and the Crew'
event.title == 'Space-Journey with Sprock and the Crew'
when: "I create a breadcrumb from it"
def eventCrumb = eventController.createCrumb("Event", "show", "1", event.title)
/*
private Map createCrumb (String controllerName, String actionName, String id, String msg) {
msg = (msg ? msg : "cr.breadcrumb.${controllerName}.${actionName}")
[ 'controller':controllerName,
'action':actionName,
'id':id,
'message':msg
]
*/
then: "I receive a map where the message-value is the events' title"
eventCrumb.message == event.title
}
}
note la commenté méthode qui est dans le EventControllerPourquoi cette méthode renvoie-t-elle une valeur nulle même si le contrôleur sous-jacent est mocké à l'aide de Mock() de Spock?
- Pourquoi la cause extrait "Impossible d'obtenir la propriété 'message' sur l'objet null"?
- Comment puis-je configurer l'extrait correctement?
- En général, est-ce/je ne besoin d'aucune des mockTagLib, mockController, mockLogging fonctions GrailsUnitTestCase lors de l'utilisation Spock?
Great! Merci, mfloryan. Lequel, dans ce contexte (?), Est-il la métaclasse des contrôleurs? – user569825
controller.metaClass – mfloryan
Pour les utilisateurs de versions ultérieures de Grails (2.3.x), ce problème semble avoir reculé, maintenant que Spock fait partie des tests Grails par défaut. http://jira.grails.org/browse/GRAILS-11239 – jonnybot