【发布时间】:2018-02-19 08:36:33
【问题描述】:
我在 React 组件中有以下功能:
parentFunction: function(items){
let variableOfInterest = this.callThisFunction().toArray().filter((ele) => {
if(obj[ele.get('id')]){
return ele
}
}).map((ele) => ele.get('id'))
this.setState({newState:variableOfInterest})
}
我可以使用存根编写调用 callThisFunction 的测试,但无法确定是否可以使用 sinon 或 chai 来监视 variableOfInterest 的值。我想编写一个可以传入参数的测试,并使用“期望”来测试结果的值。最后返回值也没有任何意义——而且仅仅为了测试而这样做似乎没有必要。 我也希望能够测试调用 toArray() 的结果,如果可能的话,还可以测试 filter()。感谢您的任何见解!
这是我调用 callThisFunction() 的测试:
it('should call callThisFunction() once', () => {
let callThisFunctionStub = sinon.stub(prototype, 'callThisFunction')
let stub = callThisFunctionStub.callsFake(() => objectToReturn)
prototype.callParentFunction(items)
sinon.assert.calledOnce(stub)
})
【问题讨论】:
-
除非
variableOfInterest后面的代码有副作用,否则它是死代码,可以简单地删除。该变量根本没有在代码中的任何地方使用。 -
@marvinhagemeister 用于设置状态。
-
你说得对,我错过了!很抱歉造成混乱
-
您不能直接检查/断言
state吗?或者,您可能需要考虑对setState进行存根检查以检查调用它的参数是否是您期望(或想要断言)的参数。
标签: javascript unit-testing sinon chai