用于测试函数调用失败的Jasmine测试

时间:2015-06-05 09:05:56

标签: javascript jquery ruby-on-rails web jasmine

我有以下javascript -

function changeSelectBoxTitle() {
  var value = $('#reason_id').find('option:selected').text();
  $('#reason_id').attr('title', value);
}

$(document).on('change', '#reason_id', function() {
  changeSelectBoxTitle();
});

基本上在更改选择框时,应调用changeSelectBoxTitle()函数。通过UI传递测试它。我试图通过茉莉花测试这个电话。 这是我的茉莉花测试 -

describe('when select box value is changed', function() {
    it('calls the changeSelectBoxTitle function', function() {
        spyOn(window, 'changeSelectBoxTitle');
        var $dropDown = $('#reason_id');
        $dropDown.change();
        expect(window.changeSelectBoxTitle).toHaveBeenCalled();
    });
});

一切看起来都不错。但测试失败了。我不知道为什么。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

正如@eck在您的问题下面的评论中所说,您的代码没有任何问题,测试失败是由于测试设置造成的。

将以下html元素添加到您的设置将允许测试通过

  <select id="reason_id" class="" name="">
    <option selected value="One">One</option>
    <option value="Two">Two</option>
  </select>

请参阅测试通过的jsfiddle