监视构造函数而不嘲笑它

时间:2020-07-14 12:06:24

标签: python flexmock

我正在尝试测试一些构造email.mime.text.MIMEText对象的代码,并且需要确保在调用构造函数时将正确的文本传递给_text参数。

我可以像这样模拟构造函数:

(flexmock(email.mime.text.MIMEText)
         .should_receive('__init__')
         .with_args('message text', _charset='utf-8'))

从某种意义上说,这是有效的,如果未使用适当的参数调用构造函数,则测试将失败,因为期望将失败。但是,由于__init__现在是一个存根函数,所以返回的对象不是完整的格式,并且使用它的代码将由于其属性未正确设置而出现随机故障。

到目前为止,我发现的唯一解决方法是模拟所有我在对象上调用的其他方法,以使它们不依赖于完全形成的对象,但这属于“测试过多”的领域。

是否有一种机制可以在根据参数检查期望值后允许__init__方法完成其所有正常工作?我确实尝试使用should_call,但这导致期望也与超类__init___调用匹配,后者没有相同的签名。

0 个答案:

没有答案