【问题标题】:Jasmine test for testing a function call failing用于测试函数调用失败的 Jasmine 测试
【发布时间】:2015-06-05 09:05:56
【问题描述】:

我有以下 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();
    });
});

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

【问题讨论】:

  • 代码看起来没问题。我会看看更基本的东西,比如在测试中,$dropdown 是否真的选择了一个元素?其他地方肯定有其他问题,可能在您的设置中。

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


【解决方案1】:

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

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

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

查看此jsfiddle,您的测试通过了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多