【问题标题】:How to unit-test a NextPasswordChangeDate function against the Active Directory如何针对 Active Directory 对 NextPasswordChangeDate 函数进行单元测试
【发布时间】:2009-05-26 14:56:33
【问题描述】:

我正在大量使用 Active Directory 进行项目。我针对 AD 为几件事设置了一些单元测试,其中一些是我使用模拟对象实现的,一些是我通过对 AD 的真实调用来实现的。

作为我项目的功能之一,我必须检索所谓的“用户配置文件”。此用户配置文件主要由简单的属性组成,例如“cn”、“company”、“employeeid”等。但是,我要填写的一个属性不是简单的“NextPasswordChangeDate”。

据我所知,获得此信息的唯一方法是获取域策略的 maxPwdAge 并将此信息与 pwdLastSet 一起使用。

现在我的问题是:如何以智能的方式进行单元测试?我想出了三个选项,都不是很好:

  1. 使用自己的账号作为搜索账号,通过其他方式找出日期并在单元测试中硬编码。通过这种方式,我可以很好地对我的代码进行单元测试,但是每个月我都必须更改单元测试,因为我更改了我的密码。
  2. 使用一些设置了密码永不过期的帐户。这有点毫无意义,因为我无法真正测试我的代码的正确性。
  3. 使用模拟对象并确保发生正确的 API 调用。这个选项允许测试函数行为的正确性,但是测试的逻辑实际上是在单元测试中,因此我不能确定它是否在做正确的事情,即使测试通过了。

你建议哪三个?或者你有更好的选择?

【问题讨论】:

    标签: unit-testing active-directory mocking


    【解决方案1】:

    从 1 和 2 开始,对我来说,依赖 AD 存在并具有已知值似乎更像是集成测试。

    我通常认为,如果可能,任何非确定性行为都应该被接口和模拟(#3)。正如您所指出的,这将始终留下大量不可单元测试的实际实现代码,但随后会被针对已知 AD 系统运行的集成测试所覆盖。

    Related Question/Answer

    【讨论】:

      猜你喜欢
      • 2017-07-11
      • 2014-02-08
      • 2013-05-22
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多