如果方法将特定类型的对象作为参数,它是否应该返回该对象的新实例?

时间:2013-04-30 13:33:30

标签: .net refactoring

我正在尝试确定哪两个测试结构最好,以确定应如何编写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被更改以外的属性。

1 个答案:

答案 0 :(得分:0)

SaveFoo应更新现有对象,因为这是已保存到数据库的对象。