Unit testing 我应该复制测试数据和断言数据吗?

Unit testing 我应该复制测试数据和断言数据吗?,unit-testing,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 一种方法比另一种更可取吗?假设传入

最好用一个简单的例子来回答这个问题:

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

一种方法比另一种更可取吗?假设传入的值是我期望返回的值,那么在第二个断言中有什么危害吗?这有关系吗?

在更复杂的情况下,你将无法完全复制一个对象,而且你也不想。最好这样写:

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);
要测试对象复印机,也不要更改原始对象(哪一行不会测试)