2012-03-29 3 views
0

Je travaille sur la conversion d'une application Backbone en une application Ember à l'aide de données Ember. Cela fonctionne très bien dans le navigateur mais les cas de test de Jasmine ne passeront pas. Lorsque je tente de créer un dossier dans le cas de test Jasmine je reçois cette erreur:Création d'un enregistrement avec EmberData lors de tests avec Jasmine

TypeError: 'undefined' is not a function (evaluating 'type._create({ store: this })') in http://localhost:8888/spec/javascripts/generated/assets/application.js (line 26874) 

Ceci est le code réel que les points de message d'erreur:

createRecord: function(type, properties, transaction) { 
    properties = properties || {}; 

    // Create a new instance of the model `type` and put it 
    // into the specified `transaction`. If no transaction is 
    // specified, the default transaction will be used. 
    // 
    // NOTE: A `transaction` is specified when the 
    // `transaction.createRecord` API is used. 
    var record = type._create({ 
     store: this // line 26874 
    }); 

Le code réel que le cas de test est l'exécution ressemble à ceci:

nutrient = App.Nutrient.createRecord({"name_min":"nut 1","female_31_50_min":7.5,"male_31_50_min":8.0,"created_at":"2011-10-10T01:31:53Z","female_51_70_min":8.5,"updated_at":"2011-10-12T12:28:35Z","male_70_plus_min":10.0,"female_19_30_min":6.5,"child_4_8_min":4.0,"male_19_30_min":7.0,"lactating_14_18_min":5.75,"infant_0_05_min":1.0,"female_70_plus_min":9.5,"pregnant_14_18_min":5.8,"infant_6_12_min":2.0,"id":1,"male_9_13_min":5.0,"child_1_3_min":3.0,"female_9_13_min":4.5,"female_14_18_min":5.5,"male_14_18_min":6.0,"lactating_31_50_min":7.75,"pregnant_31_50_min":7.8,"pregnant_19_30_min":6.8,"male_51_70_min":9.0,"lactating_19_30_min":6.75,"female_31_50_max":8.5,"male_31_50_max":9.0,"female_51_70_max":9.5,"male_70_plus_max":11.0,"female_19_30_max":7.5,"child_4_8_max":5.0,"male_19_30_max":8.0,"lactating_14_18_max":6.75,"infant_0_05_max":2.0,"female_70_plus_max":10.5,"pregnant_14_18_max":6.8,"infant_6_12_max":3.0,"male_9_13_max":6.0,"child_1_3_max":4.0,"female_9_13_max":5.5,"female_14_18_max":6.5,"male_14_18_max":7.0,"lactating_31_50_max":8.75,"pregnant_31_50_max":9.8,"pregnant_19_30_max":7.8,"male_51_70_max":10.0,"lactating_19_30_max":7.75}) 

person = new App.Person.createRecord({age: 0.25}) 

expect(nutrient.requiredNutrientForPerson(person)).toEqual({min_amount: 1.0, max_amount: 2.0}) 

Toutes les idées seraient appréciables.

Répondre

2

Désolé, c'est mauvais. Le problème est avec cette ligne:

person = new App.Person.createRecord({age: 0.25}) 

je avais besoin d'enlever le mot-clé new et cela a fonctionné correctement

+0

Ah, n'a pas remarqué, mais il est logique maintenant donné l'erreur. J'espère ne pas confondre les choses avec la mention de la boucle d'exécution. Il est bon de voir des gens qui utilisent des données sur les braises maintenant - je vais devoir les revoir bientôt. –

2

En général, si vous rencontrez des problèmes avec un test que vous ne rencontrez pas dans le navigateur, c'est parce que les tests sont exécutés en dehors de la boucle d'exécution Ember.

Essayez d'appeler Ember.run.sync() avant expect() pour forcer la synchronisation. Vous pouvez également placer n'importe quel code impliquant la liaison dans un fn anonyme à l'intérieur: Ember.run(function() { }).

Consultez la source de données de braises et de braises pour d'autres exemples de tests, car la couverture est assez solide. Cela dit, je ne suis pas un expert en données braises, donc je ne suis pas sûr si c'est le problème que vous rencontrez.

Questions connexes