Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编写单元测试的最佳方法是断言对象已使用新实例化的值进行了设置?_C#_Unit Testing_Object_Pass By Reference - Fatal编程技术网

C# 编写单元测试的最佳方法是断言对象已使用新实例化的值进行了设置?

C# 编写单元测试的最佳方法是断言对象已使用新实例化的值进行了设置?,c#,unit-testing,object,pass-by-reference,C#,Unit Testing,Object,Pass By Reference,假设我有一门课: public class Person { public string Name { get; set; } public int Age { get; set; } } 在一个方法中,我实例化了它: public void SomeMethod(Person person) { person = new Person() } 在传入人员之前,已设置了值 断言SomeMethod将传递的引用设置为新实例化的对象的最佳方式是什么 我所能想到的就是检查所有可为nu

假设我有一门课:

public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}
在一个方法中,我实例化了它:

public void SomeMethod(Person person)
{
   person = new Person()
}
在传入人员之前,已设置了值

断言
SomeMethod
将传递的引用设置为新实例化的对象的最佳方式是什么

我所能想到的就是检查所有可为null的属性是否为空,以及不可为null的值是否具有默认值


有比这更好的方法吗?

你不相信new会调用类构造函数吗?奇怪,并不是我不相信它。我正在测试它是否被调用。从本质上说,此人已被重置。检查引用是否相等只会测试它是否是另一个对象。并不是说它是一个新实例化的对象。只是为了澄清,SomeMethod不会将调用方的引用设置为一个新实例化的对象。它所做的只是将自己的局部变量设置为新实例化的对象。也许这会引起一些混乱?即使对象是通过引用传递的,实际上它是传递给方法的引用的副本,因此在方法之外时不会设置它。如果要为传递给
SomeMethod
的引用设置一个新的值(例如
Person
),则需要使用
ref
关键字:
public void SomeMethod(ref Person-Person)