2015-04-16 2 views
4

Фон - это то, что я пытаюсь создать very basic thermostat в javascript, а затем проверить его, используя жасмин.loadStyleFixtures не загружает css в тестах на жасмин

Я хочу, чтобы проверить, что страница загружается с определенным css (то есть, что термостат является правильным цветом), а затем обновляет его. Тесты, проверяющие, обновляется ли цвет, проходят нормально, но первый тест для проверки правильности исходного цвета не проходит.

После остановки тестов в консоли я понял, что таблица стилей CSS не применяется к тестам - хотя она работает на обычном локальном сервере. Это заставляет меня думать, что есть некоторая проблема со мной, используя loadStyleFixtures, чтобы поставить css в жасмин.

Тест выглядит следующим образом:

describe('Display', function(){ 

beforeEach(function(){ 
    thermostat = new Thermostat(); 
    jasmine.getFixtures().fixturesPath = '.'; 
    loadFixtures('temperature_change.html'); 
    jasmine.getStyleFixtures().fixturesPath = './public/css'; 
    loadStyleFixtures('stylesheet.css'); 
}); 

... 

it('can start as yellow', function(){ 
    expect($('#temperature').css('color')).toEqual('rgb(255, 255, 0)'); 
}); 

Стилевые выглядит следующим образом:

body { 
    background-color: navy; 
    color: white; 
} 

#temperature { 
    color: yellow; 
} 

setStyleFixtures ('# температура {цвета: желтый;}') также не работает при добавлении к функции beforeEach. Моим патчем было использование jquery для добавления css в блок beforeEach вместо того, чтобы требовать таблицу стилей CSS.

Любая помощь очень ценится!

Редактировать: Тест проходит с перерывами - не уверен, что делать, кроме того, возможно, проблема связана с настройкой моего сервера или чем-то еще.

ответ

3

В конце концов, проблема заключалась в том, что я добавлял светильники и стили в неправильном порядке в блоке beforeEach моих тестов.

Так что этот код будет проходить мои тесты:

beforeEach(function(){ 
    thermostat = new Thermostat(); 
    jasmine.getStyleFixtures().fixturesPath = './public/css'; 
    loadStyleFixtures('stylesheet.css'); 
    jasmine.getFixtures().fixturesPath = '.'; 
    loadFixtures('temperature_change.html'); 
    }); 

Но это (мой оригинальный код) не будет:

beforeEach(function(){ 
    thermostat = new Thermostat(); 
    jasmine.getFixtures().fixturesPath = '.'; 
    loadFixtures('temperature_change.html'); 
    jasmine.getStyleFixtures().fixturesPath = './public/css'; 
    loadStyleFixtures('stylesheet.css'); 
    }); 

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

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

+1

Это было бы правильно, я вернулся, чтобы обновить свой ответ, поскольку у меня было # в id, lol, что испортило мои тесты. При переходе через jasmine-jquery-код добавление стиля добавляет его в голову и добавление html добавляет его в тело. Поэтому я считаю, что если вы их не в порядке, то стиль не будет применяться к недавно добавленному элементу html. –

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

  • Нет связанных вопросов^_^