gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:27:47 26 4
gpt4 key购买 nike

我正在尝试使用在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com