如何在QUnit中存根返回一个对象的函数?

时间:2017-06-14 13:26:52

标签: unit-testing qunit sapui5 stubbing

我的SAPUI5应用程序中有以下几行

var dateVal = controls.awardDate.getDateValue();
var month = dateVal.getMonth();

awardDate是用户输入日期并返回javascript日期对象的日期选取器。这是我的qunit片段来测试这个元素。

awardDate: {
  getValue: getInvalidValue,
  getValueState: getValueStateWarning,
  setValue: setValue,
  getDatevalue: getDateValue
 }

在我的qunit中,我收到一条错误消息,指出该对象不支持属性或方法'getDateValue'。我不确定当它返回一个对象时我该如何存根这个函数。我这样做的其他测试

var getValue = sinon.stub().returns('');

我得到一个空字符串。 所以我尝试使用datepicker来实现它是

var getDateValue = sinon.stub().returns(new Date());

但这不起作用。我仍然得到同样的错误。有人曾经这样做过吗?

编辑/更新:我可以通过执行以下操作来解决部分问题

var getValueDate = sinon.stub().returns(Object, function(){ });

现在我遇到的问题是同样的错误,但getMonth()返回一个字符串。所有其他变量都是全局变量,但是当用户更新datepicker时,会立即创建dateVal。关于如何继续这个的任何想法?

2 个答案:

答案 0 :(得分:0)

尝试使用此代码:

var getValueDate = sinon.stub(controls.awardDate, 'getDateValue');
var month  = {
    getMonth: sinon.stub()
}
getValueDate.returns([month]);

答案 1 :(得分:0)

我能够弄清楚如何解决这个问题。我必须使Object类型成为像这样的特定Date对象

 var getValueDate = sinon.stub().returns(new Date()), function(){ });