2014-10-27 71 views
0

的问题可能是最好的一个简单的例子问:我应该复制测试数据并声明数据吗?

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 

优于另一种方法是什么?假设传入的值是我期望返回的值,那么第二个assert中是否有任何伤害?它甚至重要吗?

回答

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); 

测试的对象不是复印机更改原始对象(其中任一行不会测试)。

相关问题