loadStyleFixtures不会在jasmine测试中加载css

时间:2015-04-16 12:12:34

标签: javascript css jasmine jasmine-jquery

背景是我尝试在javascript中创建very basic thermostat然后使用jasmine进行测试。

我希望能够测试页面加载某些css(即恒温器是正确的颜色),然后更新它。检查颜色是否更新的测试通过正常,但是检查初始颜色是否正确的第一个测试没有通过。

在控制台中停止测试后,我意识到css样式表并未应用于测试 - 尽管它可以在普通的本地服务器上运行。这让我觉得使用loadStyleFixtures把css放在jasmine中有一些问题。

测试如下:

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;
}
如果添加到beforeEach函数,

setStyleFixtures(' #temperature {color:yellow;}')也不起作用。我的补丁是使用jquery在beforeEach块中添加css而不是需要css样式表。

非常感谢任何帮助!

编辑:测试间歇性地通过 - 不知道该怎么做,除此之外可能是我的服务器设置或其他问题。

1 个答案:

答案 0 :(得分:3)

最后,问题是我在测试的beforeEach块中以错误的顺序添加了Fixtures和styleFixtures。

所以这段代码会通过我的测试:

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');
  });

我对订单重要性的想法是,灯具本身在样式表中添加,然后再次添加表单。我认为这混淆了Jasmine,并且需要首先加载样式表。

我认为间歇性传球是因为灯具偶尔会加载缓慢,首先加载样式表的时间,但我不确定。