如何编写功能的单元测试?

时间:2019-05-02 11:10:36

标签: javascript qunit stub

我正在将单元测试引入我的javascript文件。由于我不希望继承某些函数,因此我独立声明了一个函数。如何编写函数的单元测试? (就像下面的“ getFormatData”一样),我还没有找到有关此的教程。也许关键字不正确:)我知道如何为setValue编写UT,但如何为“ getFormatData”编写UT。我尝试过,但控制台显示未定义getFormat。即使我添加“ window.getFormatData({});”,错误消息也是一样。

MockedObject.prototype.setValue(oData){
    var oMockedData = getFormatData(oData);

    this.setData(oMockedData);
};

function getFormatData(oData){
    return oData ? oData : 1;
}
//Test "setValue":

QUnit.module("Test setValue", funciton(assert){
    var control = new MockedObject()
    var oData = {};
    sinon.stub(window, "getFormatData").returns("MockedResult");
    sinon.stub(control, "setData");

    control.setValue(oData);

    assert.ok(control.setData.called, "setData is called");

    window.getFormatData.restore();
    control.setData.restore();
})

//Test "getFormatData": 
QUnit.module("getFormatData", function(assert) {
     // Act
     var result = getFormatData({});//var result = window.getFormatData({});

     //Assert
     assert.strictEqual(result, 1, "Accepted");
})

1 个答案:

答案 0 :(得分:0)

那么,getFormatData是做什么的?根据其输入,预期结果是什么? 有两种情况:oData是真实的---> oData被返回; 或oData虚假--->返回1;

在这种情况下,您可以调用例如getFormatData(113)并声明返回值是113,然后调用getFormatData(false)并声明返回值是1。 getFormatData。