C# 如何测试对象的新实例是否已创建?
我使用C#、xUnit和Moq进行单元测试。我有一个具有复杂类型属性的对象。要“清除”属性及其所有属性,我执行以下操作:C# 如何测试对象的新实例是否已创建?,c#,unit-testing,xunit,C#,Unit Testing,Xunit,我使用C#、xUnit和Moq进行单元测试。我有一个具有复杂类型属性的对象。要“清除”属性及其所有属性,我执行以下操作: this.ComplexTypeInstance = new ComplexType(); 现在我试图断言ComplexTypeInstance已分配给一个全新的对象。我的第一个想法是将ComplexTypeInstance与新的ComplexType()进行比较,看看它们是否相等。但是要做这样的事情,我想我必须重写equals操作符。有没有办法轻松检查所有属性是否都设置为
this.ComplexTypeInstance = new ComplexType();
现在我试图断言ComplexTypeInstance已分配给一个全新的对象。我的第一个想法是将ComplexTypeInstance与新的ComplexType()进行比较,看看它们是否相等。但是要做这样的事情,我想我必须重写equals操作符。有没有办法轻松检查所有属性是否都设置为默认值?或者有没有一种方法可以断言我已经更新了对象
或者有没有一种方法可以断言我已经更新了对象
只需使用ReferenceEquals
比较新旧引用即可。如果它们不同,则该属性已被替换
var origInstance = this.ComplexInstance;
... // Some operation
Assert.False(object.ReferenceEquals(this.ComplexInstance, origInstance));
仔细考虑后,我提出了几个不同的方案,使测试更容易: