如何用jasmine.js干掉这些测试

时间:2012-11-02 14:53:11

标签: javascript unit-testing coffeescript jasmine

我有很多测试,如下所示:

it "Should call togglePadding if df-padding is checked", ->
        spyOn(App.columnsSetupBuildingBlockController.content, 'togglePadding')
        App.view.set("paddingChecked", null)

        Em.run ->
            App.view.set("paddingChecked", true)

        expect(App.columnsSetupBuildingBlockController.content.togglePadding).toHaveBeenCalledWith(true)

    it "Should call togglePadding if df-padding is unchecked", ->
        spyOn(App.columnsSetupBuildingBlockController.content, 'togglePadding')
        App.view.set("paddingChecked", true)

        Em.run ->
            App.view.set("paddingChecked", null)

        expect(App.columnsSetupBuildingBlockController.content.togglePadding).toHaveBeenCalledWith(null)

每个测试中只有少数不同的值是不同的。我怎样才能编写一个共享函数来干掉重复的部分并让它看起来更干净?

我也有测试边距,边界等的相同测试

请帮忙。

由于 瑞克

1 个答案:

答案 0 :(得分:1)

我很确定我在你的问题中遗漏了一些东西......但这就是我理解你想做的事情

setup = (mode = null)->
    value1 = mode
    value2 = if not mode then true else null
    spyOn(App.columnsSetupBuildingBlockController.content, 'togglePadding')
    App.view.set("paddingChecked", value1)

    Em.run ->
        App.view.set("paddingChecked", value2)

    expect(App.columnsSetupBuildingBlockController.content.togglePadding).toHaveBeenCalledWith(value2)

it "Should call togglePadding if df-padding is checked", ->
    setup null

it "Should call togglePadding if df-padding is unchecked", ->
    setup true