我正在尝试确定两个测试中哪一个的结构最好,以确定应该如何编写 Repository.SaveFoo(x)。
//version 1
[TestMethod]
public void Saving_a_new_Foo_results_in_new_id()
{
var x = new Foo { Id = 0 };
x = Repository.SaveFoo(x); // Saves x and returns new Foo which is a copy of x but with an updated Id
Assert.AreNotEqual(0, x.Id);
}
//version 2
[TestMethod]
public void Saving_a_new_Foo_results_in_new_id()
{
var x = new Foo { Id = 0 };
Repository.SaveFoo(x); // Saves x and updates x.Id
Assert.AreNotEqual(0, x.Id);
}
我想这个问题可以改写为,SaveFoo 方法应该返回一个新对象还是简单地更新传递给它的对象?
注意,我已经简化了代码;保存过程会导致 ID 以外的属性也被更改。