jquery - 如何检查 jQuery 方法(fadeOut、hide 等)是否已使用 Jasmine 调用

标签 jquery tdd jasmine jasmine-jquery

我正在尝试使用在 Ruby 中适用的 TDD 方法来清理我的 Javascript,但转向 Jasmine 却让我陷入了困境。

举一个简单的例子,我想指定给定的元素在点击时淡出:

$('.position-details').live 'click', ->
  $this = $(this)
  $this.fadeOut 'fast', ->
    $this.closest('.fields').find('.position-search').fadeIn('fast').focus()

我的规范:

describe "Position picker", ->
  beforeEach ->
    loadFixtures("position_picker.html")
    @details = $('.position-details')
    @picker = $('.position-picker')
    jasmine.Clock.useMock()

  it "the position details are initially shown", ->
    expect(@details).toBeVisible()

  describe "when the position details are clicked", ->
    it "fades out the position details", ->
      @details.trigger('click')
      jasmine.Clock.tick(1000)
      expect(@details).not.toBeVisible()

我的固定装置:

<div id='position-data' data-positions="[{&quot;value&quot;:35,&quot;label&quot;:&quot;Accountant&quot;,&quot;division&quot;:&quot;North&quot;,&quot;job_class&quot;:&quot;Headquarters&quot;}]"></div>

<div class='position-details'>
  <div class='position-name'></div>
  <br />
</div>

<div class='position-picker'>
  <label>Position<abbr title="required">*</abbr></label>
  <span class="error" />
  <input class="position-search" type="text" />
  <div>
    <input class="position_id" type="text" />
  </div>
</div>

第一个规范通过了,我不确定为什么第二个规范没有通过。一旦我掌握了其中一些,我相信它会成为我的第二天性。感谢您的帮助或建议!

最佳答案

您可以使用spyOn

检查一下:

it("fades out the element", function() {
  spyOn($.fn, 'fadeOut');
  fadeOutElem();
  expect($.fn.fadeOut).toHaveBeenCalled();
});

您还可以使用这样的超时:

it("fades out the element", function(done) {
  fadeOutElem();
  setTimeout(300, function() {
    expect($(".position-details").css('display').toEqual('none');
    done();
  });
});

关于jquery - 如何检查 jQuery 方法(fadeOut、hide 等)是否已使用 Jasmine 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649740/

相关文章:

javascript - JQuery 自动完成问题

python - 从测试代码输出打印/日志语句的 pytest 选项

unit-testing - 如何使用NHibernate有效地进行TDD?

python - pre-commit 测试应该使用大数据集并在查询时间过长时失败,还是应该使用小型测试数据库?

javascript - 错误 : <toHaveBeenCalled> : Expected a spy, 但得到了功能

javascript - jQuery:在我的网站上 2 秒后显示 div,但只显示一次,而不是每次刷新页面或进入不同页面时

jquery - 在流体布局上用 jquery 替换背景大小

javascript - window.parent.location.href 不适用于 mac os 上的 safari

javascript - Protractor - 在 ng-repeat 中获取子元素的文本

javascript - Jasmine jQuery : Check if element is visible