我应该复制测试数据并断言数据吗?

时间:2014-10-27 15:23:35

标签: unit-testing

最好问一个简单的例子:

var myObj = { name: 'John' };
var copiedObj = ObjectCopier.copy(myObj);

copiedObj.name.should.equal('John');     // Hard code 'John' twice
copiedObj.name.should.equal(myObj.name); // Reference the original value

一种方法优于另一种吗?假设传入的值是我期望返回的值,第二个断言是否有任何损害?它甚至重要吗?

1 个答案:

答案 0 :(得分:1)

在更复杂的情况下,您将无法完全复制对象 - 而且您不希望这样做。用这种方式写得更好:

var OBJ_NAME = 'John'
var myObj = { name: OBJ_NAME };
var copiedObj = ObjectCopier.copy(myObj);

copiedObj.name.should.equal(OBJ_NAME);

这样你就不会复制任何代码/定义,你也可以进行如下测试:

myObj.name.should.equal(OBJ_NAME);

测试对象复印机是否也没有改变原始对象(你的任何一行都不会测试)。