2015-09-06 4 views
0

Я пытаюсь проверить методы метеора с помощью Жасмин, но получить постоянную синюю точку, в отличие от красного/зеленого и одного из следующих ошибок:Простой Метеор Метод Жасмин Тест не работает

(STDERR) connections property is deprecated. Use getConnections() method 
(STDERR) [TypeError: Cannot call method 'split' of undefined] 

Мои методы расположены под lib/methods.js и метод, который я пытаюсь проверить это следующим образом:

Meteor.methods({ 
    copy_on_write_workout: function(day) { 
     if (!Meteor.userId()) { 
      throw new Meteor.Error("not-authorized"); 
     } 
     var date = day_to_date(day, 0); 
     var workout = Workouts.findOne({ 
      day: day, 
      owner: Meteor.userId(), 
      current_week: true 
     }); 

     // not completed in the past. no need to copy it 
     if (workout.completed.length == 0 || 
      (workout.completed.length == 1 && 
      workout.completed.last().getTime() == date.getTime())) { 
       return; 
     } 

     var new_workout = workout; 
     if (workout.completed.last().getTime() == date.getTime()) { 
      new_workout.completed = [date.getTime()]; 
      Workouts.update(workout._id, {$pop: {completed: 1}}); 
     } else { 
      new_workout.completed = []; 
     } 

     Workouts.update(workout._id, {$set: {current_week: false}}); 

     delete new_workout["_id"]; 
     Workouts.insert(new_workout); 
    } 
}); 

Вот мой простой тест под tests/jasmine/server/unit/method.js:

describe('workouts', function() { 
    it("copy_on_write_workout simple test", function() { 

     spyOn(Workouts, 'findOne'); 

     Meteor.call('copy_on_write_workout', "Monday"); 

     expect(Workouts.findOne).toHaveBeenCalled(); 

    }); 
}); 

И sanjo:jasmine, и velocity:html-reporter были установлены и включены в мои пакеты. Есть ли какая-либо дополнительная настройка, прежде чем я смогу заставить ее работать? Спасибо

ответ

1

Вызов метода Meteor принимает функцию обратного вызова в качестве последнего аргумента, как описано здесь https://forums.meteor.com/t/use-meteor-call-with-jasmine-doesnt-work/6702/2.

Я установил свои тесты, просто изменив его:

describe('workouts', function() { 
    it("copy_on_write_workout when never completed", function() { 
     spyOn(Workouts, 'findOne'); 
     spyOn(Meteor, 'userId').and.returnValue(1); 

     Meteor.call('copy_on_write_workout', "Monday", function(err, result) { 
      expect(Workouts.findOne).toHaveBeenCalled(); 
     }); 
    }); 
}); 

Кроме того, я добавил spyOne(Meteor, 'userId').and.returnValue(1) так, что проверка, если пользователь был авторизован проходами.

Смежные вопросы