我有一个处理密码更改和交换邮箱过期检查的类。
我检查UserPrincipal上的LastPasswordSet。
现在,TDD呢?
我想通过编写一些测试来检查我的类(class)是否正确处理了密码检查。但是我无法理解如何模拟UserPrincipal.FindByIdentity(principalContext,[某些用户名])。
我将要编写一个方法,如果密码在最近90天内已更改,则返回true/false。因此,我想模拟UserPrincipal,以便可以在测试中设置LastPasswordSet返回值,只是为了检查要为“密码需要更改通知”编写的逻辑。
最佳答案
我会用精妙的短语回答
“不要 mock 您不拥有的类型”
找不到权威的博客文章来对此进行支持。 Sample link。尽管它似乎可以归因于乔·沃尔恩斯。
我记得UserPrincipal是与身份验证相关的.Net框架类。无法控制的模拟类型(可以更改)可能导致脆弱的测试。
而是从UserPrincipal发现您的设计需要什么
关于c# - 模拟用户主体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7144959/