2

我有一个悖论。

在构建实现​​之前,我正在尝试使用 TDD 为我的密码哈希方法构建测试。但是我不知道如何事先提出预期值,而无需先构建实现。

当然,通过简单的散列实现,我可能会找到一个站点来根据已知的密码/盐创建预期值。

我打赌解决方案是对 TDD 进行例外处理,并首先放弃构建我的测试。相反,构建我的实现以提出正确的盐/哈希值,然后针对这些值构建我的测试以防止回归。

但我想我会发布这个,看看是否有我没有想到的解决方案。

或者,也许有人可以在他们的头脑中生成哈希值,以便首先构建测试。

4

2 回答 2

2

我不知道您是否正在编写自己的散列函数,例如 sha-1(在这种情况下只是不这样做)或者您正在使用外部散列和随机函数来生成盐等。在第二种情况下,您不需要必须知道你的输出。您只需模拟您的哈希和随机提供程序,并检查它们是否在您的输入和/或部分结果上被调用

于 2012-07-15T22:52:57.900 回答
1

所以,基本上你在做 TDD 时应该知道“预期”的输出。在您的情况下,预期输出是散列函数的结果。

如果您正在实施已知的散列算法,那么从他们的站点获取测试结果或手动生成它们都不是问题。

如果您正在开发自己的算法。您还应该通过实现算法实现的原型来知道预期的输出。即使您不知道它们是否正确,您也只是假设它们正确并在测试中使用值。如果散列函数的实现发生变化,那些测试就会变成红色。

于 2012-07-09T05:50:21.850 回答