Как реализовать функцию Meteor Tracker? - PullRequest
0 голосов
/ 07 сентября 2018

Я пишу модуль, поддерживающий Meteor Tracker, но не могу его протестировать. Я добавил meteor-standalone-tracker в качестве зависимости dev и написал тестовый пример, но функция autorun вызывается только один раз.

Например, я написал фиктивный тест, вдохновленный из документов следующим образом

import assert from 'assert';
import Tracker from 'trackr';

describe('Testing Tracker', () => {

  it('should do as expected', () => {

    var favoriteFood = "apples";
    var favoriteFoodDep = new Tracker.Dependency;

    var getFavoriteFood = function () {
      favoriteFoodDep.depend();
      return favoriteFood;
    };

    var setFavoriteFood = function (newValue) {
      favoriteFood = newValue;
      favoriteFoodDep.changed();
    };

    console.log("GET:" , getFavoriteFood());
    // "apples"

    var handle = Tracker.autorun(function () {
      console.log("Your favorite food is " + getFavoriteFood());
    });
    // "Your favorite food is apples"

    setFavoriteFood("mangoes");
    // "Your favorite food is mangoes"
    setFavoriteFood("peaches");
    // "Your favorite food is peaches"
    setFavoriteFood("bananas");
    // "Your favorite food is bananas"
    handle.stop();
    setFavoriteFood("cake");
    // (nothing printed)

  });

});

Вывод only , который я получаю, таков:

console.log test/tracker.spec.js:27
   GET: apples

console.log test/tracker.spec.js:31
   Your favorite food is apples

Чего мне не хватает?

1 Ответ

0 голосов
/ 08 сентября 2018

Мое текущее решение - сбросить все вычисления.

Tracker.flush();

Это заставит autorun функции с зависимостями, которые были изменены, вызываться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...