茉莉花测试:
describe 'Toolbar', ->
beforeEach ->
jasmine.getFixtures().fixturesPath = "../spec/javascript/fixtures"
loadFixtures("canvas_fixture.html")
describe 'Rectangle Button Click', ->
it 'adds the selected class to rectangle button', ->
toolbar = new Toolbar()
expect(toolbar).toBeDefined
console.log $('#rectangle')
toolbar.rectangle
expect($('#rectangle').hasClass("selected")).toBeTruthy()
console.log $('#rectangle')
类别:
class window.Toolbar
jQuery ->
rectangle: $('#rectangle').click ->
$('#toolbar button').removeClass("selected")
$('#rectangle').addClass("selected")
这个测试对我来说失败了,因为所选的类没有添加到灯具中,我想我没有正确调用该函数。我该如何调用
$( '#矩形')。然后按
我的测试功能?感谢。
答案 0 :(得分:1)
我不知道整个背景,但我看到了一些事情:
toolbar.rectangle
没有调用函数,你需要说toolbar.rectangle()
来实际调用它你写的类没有在Toolbar类中定义一个方法,你应该写这样的东西:
class Toolbar
rectangle: ->
$('#rectangle').click ->
$('#toolbar button').removeClass("selected")
$('#rectangle').addClass("selected")
当您编写此$('#rectangle').click -> ...
时,您正在定义一个事件处理程序,当您单击#rectangle
时将调用该事件处理程序。如果你想让它立即采取行动(即当你致电toolbar.rectangle()
时,你需要这样的话:
class Toolbar
rectangle: ->
$('#toolbar button').removeClass("selected")
$('#rectangle').addClass("selected")
当然,你需要确保在页面正确加载后发生这一切,不熟悉Jasmine来说明是否会发生这种情况。
希望这有帮助。