我正在尝试用我编写的自定义mock修补函数调用
subscriberMock = MagicMock(side_effect=subscriber)
subscriberMock.return_value.unregister.return_value = True
with patch('rospy.Subscriber', subscriberMock):
data['op'] = "unsubscribe"
data['topic'] = "/helo"
self.rosbridge.incoming(data)
内部方法有这段代码
^{pr2}$但是,当我运行这个时,它返回一个属性错误
'NoneType' object has no attribute 'unregister'
我猜return_value
被设置为一个NoneType,但我认为这个subscriberMock.return_value.unregister.return_value
会覆盖它
更多信息:
如果我打印self.subscribers[topic]
,它将返回None
。然后产生副作用。既然我有参数的返回值,self.subscribers[topic] = None
为什么要这样呢。在
您必须编写一个mock来调用副作用中的实例化,而不是上面的mock
这是因为MagicMock要么有返回值,要么有副作用
相关问题 更多 >
编程相关推荐