Тесты Emberjs зависают при запуске через CLI

Мой тестовый набор Ember истекает, когда я запускаю его через командную строку. Я выследил это, и это из-за ajaxComplete не запускает AJAX-запрос, который запускается через вызов visit, но этот же запрос запускает полное событие нормально при запуске через браузер.

ajaxComplete событие вызывает вызов Ember's decrementAjaxPendingRequests и когда это не называется, он будет постоянно вращаться во время wait метод как Test.pendingAjaxRequests запросов не 0. Вы можете увидеть это здесь:

    function wait(app, value) {
      return Test.promise(function(resolve) {
        // If this is the first async promise, kick off the async test
        if (++countAsync === 1) {
          Test.adapter.asyncStart();
        }

        // Every 10ms, poll for the async thing to have finished
        var watcher = setInterval(function() {
          console.log("watcher tick");
          // 1. If the router is loading, keep polling
          var routerIsLoading = !!app.__container__.lookup('router:main').router.activeTransition;
          if (routerIsLoading) { 
            return; 
          }

          // 2. If there are pending Ajax requests, keep polling
          if (Test.pendingAjaxRequests) { 
            console.log("PENDING AJAX REQUESTS: ", Test.pendingAjaxRequests, " - RETURNING");
            return;
          }

          // 3. If there are scheduled timers or we are inside of a run loop, keep polling
          if (run.hasScheduledTimers() || run.currentRunLoop) {
            return;
         }

          if (Test.waiters && Test.waiters.any(function(waiter) {
            var context = waiter[0];
            var callback = waiter[1];
            return !callback.call(context);
          })) { 
            return;
          }
          // Stop polling
          clearInterval(watcher);


          // If this is the last async promise, end the async test
          if (--countAsync === 0) {
            Test.adapter.asyncEnd();
          }

          // Synchronously resolve the promise
          run(null, resolve, value);
        }, 10);
      });

    }

Запрос AJAX, о котором идет речь, взят из модельного хука на одном из моих маршрутов, и это просто return this.store.find('model_name'), Я использую sinon.js, чтобы подделать этот запрос, и я вижу, что он вернется правильно, если я поставлю then пункт о том, что найти вызов, но он все еще не стреляет это ajaxComplete событие.

Вот мой стек:

  • Эмбер: 1.7.1
  • Ember-Data: 1.0.0-beta.8.2a68c63a
  • Чайная ложка (Мой тестовый бегун): 0.8.0
  • JQuery: 1.10.2
  • PhantomJS (CLI Test Runner): 1.9.7 && 1.8.2

Кто-нибудь знает, есть ли открытая проблема для этого или какая конкретная часть стека может быть причиной этого? Я в недоумении, куда идти отсюда.

0 ответов

Другие вопросы по тегам