2015-06-22 4 views
4

Это была неприятная проблема в течение нескольких дней. Когда я начинаю пытаться писать приемочные тесты для своего приложения Ember, когда я использую функцию visit(), URL-адрес изменяется в адресной строке браузера, поэтому, когда я меняю немного кода и происходит liveReload, он переходит с моей тестовой страницы на любую страницу, которую я сказал ей посетить в тестах.Приемочные испытания в Ember.js изменить URL-адрес в адресной строке

Чтобы устранить неполадки, я создал новое приложение, создал маршрут и шаблон для дома и создал для него приемочный тест, и он прошел отлично, не меняя URL-адрес в адресной строке. Я сравнил код в tests/helpers, и это то же самое, что и tests/index.html.

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

В качестве примера, приведено мое одно приемочное испытание. Она проходит, но URL на самом деле изменения:

import Ember from 'ember'; 
import { module, test } from 'qunit'; 
import startApp from 'star/tests/helpers/start-app'; 

var application; 

module('Acceptance: AddMilestone', { 
    beforeEach: function() { 
    application = startApp(); 
    }, 

    afterEach: function() { 
    Ember.run(application, 'destroy'); 
    } 
}); 

test('Adding milestones', function(assert) 
    visit('/projects/1234567/details'); 

    andThen(function() { 
    assert.equal(currentPath(), 'project.details'); 
    }); 
}); 
+0

Я обнаружил, что если вы переадресовываете свои маршруты, это приведет к нарушению приемочного тестирования, и вам потребуется запустить отдельный сервер cli на другом порту и с флагом среды, установленным в 'test' в соответствии с комментариями ниже. Ключ к пониманию того, что вызывает проблему, заключается в том, что Маршруты в вашем приложении нарушают приемочные тесты из-за того, что тип местоположения был тем, что вы установили в режиме разработки. –

ответ

6

Посмотрите в config/environment.js для блока, подобный следующему:

if (environment === 'test') { 
    // Testem prefers this... 
    ENV.baseURL = '/'; 
    ENV.locationType = 'none'; 

    // keep test console output quieter 
    ENV.APP.LOG_ACTIVE_GENERATION = false; 
    ENV.APP.LOG_VIEW_LOOKUPS = false; 

    ENV.APP.rootElement = '#ember-testing'; 
} 

ли ENV.locationType набор для none для test среды?

Если нет, вы меняете locationType в другом месте вашего приложения? Установка его на none оставляет адресную строку в покое.

+0

Mine установлен на 'auto' – redOctober13

+1

Попробуйте установить его 'none' для' test'. Это должно решить проблему. –

+1

Это сработало, спасибо! Мне пришлось работать с '--environment = test', потому что« local »не изменил ситуацию, даже если в местоположении установлено значение none. – redOctober13

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