我正在尝试使用我编写的自定义模拟来修补函数调用
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)
内部方法有这段代码
self.subscribers[topic] = rospy.Subscriber(topic, 'msg', outgoing_function)
self.subscribers[topic].unregister() # <-- AttributeError
但是,当我运行它时,它会返回一个属性错误
“NoneType”对象没有属性“注销”
我猜return_value
设置为 NoneType 但我认为这subscriberMock.return_value.unregister.return_value
会覆盖它
更多信息:
如果我打印self.subscribers[topic]
它返回None
。然后它运行副作用。为什么应该self.subscribers[topic] = None
假设我有一个参数的返回值。