C# TDD-为什么Assert.AreName会通过?
我有一个测试方法C# TDD-为什么Assert.AreName会通过?,c#,tdd,mstest,assert,C#,Tdd,Mstest,Assert,我有一个测试方法 [TestMethod] public void MainViewModel_PropertiesReflectDataEntityProperties() { // Arrange var facilityDataEntity = MockRepository.GenerateStub<FacilityDataEntity>(); var shopOrderDataEntity = MockRepository.GenerateStub&l
[TestMethod]
public void MainViewModel_PropertiesReflectDataEntityProperties()
{
// Arrange
var facilityDataEntity = MockRepository.GenerateStub<FacilityDataEntity>();
var shopOrderDataEntity = MockRepository.GenerateStub<ShopOrderDataEntity>();
// Act
MainViewModel mainViewModel = new MainViewModel(facilityDataEntity, shopOrderDataEntity);
// Assert
Assert.AreSame(facilityDataEntity.Value, mainViewModel.FacilityValue);
}
[TestMethod]
public void MainViewModel_属性reflectDataEntityProperties()
{
//安排
var facilityDataEntity=MockRepository.generateSub();
var shopOrderDataEntity=MockRepository.GenerateSub();
//表演
MainViewModel MainViewModel=新的MainViewModel(facilityDataEntity、shopOrderDataEntity);
//断言
Assert.AreName(facilityDataEntity.Value,mainViewModel.FacilityValue);
}
。。。测试通过了。但是,我还没有实现DataEntity属性到MainViewModel属性的映射!这怎么可能?我认为Areame检查两个引用是否指向同一个实例
public class MainViewModel
{
private readonly FacilityDataEntity facilityDataEntity;
private readonly ShopOrderDataEntity shopOrderDataEntity;
public MainViewModel(FacilityDataEntity facilityDataEntity)
{
this.facilityDataEntity = facilityDataEntity;
}
public MainViewModel(FacilityDataEntity facilityDataEntity, ShopOrderDataEntity shopOrderDataEntity)
{
this.facilityDataEntity = facilityDataEntity;
this.shopOrderDataEntity = shopOrderDataEntity;
}
public ShopOrderDataEntity ShopOrderDataEntity
{
get { return shopOrderDataEntity; }
}
public FacilityDataEntity FacilityDataEntity
{
get { return facilityDataEntity; }
}
public int ShopOrder { get; set; }
public decimal RequiredQuantity { get; set; }
public string ItemCode { get; set; }
public string ItemDescription { get; set; }
public string FacilityValue { get; set; }
public string FacilityLabel { get; set; }
public static IEnumerable<MainViewModel> TranslateDataEntityList(IEnumerable<FacilityDataEntity> facilityDataEntityList)
{
foreach (FacilityDataEntity facilityDataEntity in facilityDataEntityList)
{
yield return new MainViewModel(facilityDataEntity);
}
}
public static IEnumerable<MainViewModel> TranslateDataEntityList(FacilityDataEntity facilityDataEntity, IEnumerable<ShopOrderDataEntity> shopOrderDataEntityList)
{
foreach (ShopOrderDataEntity shopOrderDataEntity in shopOrderDataEntityList)
{
yield return new MainViewModel(facilityDataEntity, shopOrderDataEntity);
}
}
}
public类主视图模型
{
专用只读设施数据实体设施数据实体;
私有只读ShopOrderDataEntity ShopOrderDataEntity;
公共主视图模型(FacilityDataEntity FacilityDataEntity)
{
this.facilityDataEntity=facilityDataEntity;
}
公共主视图模型(FacilityDataEntity FacilityDataEntity、ShopOrderDataEntity ShopOrderDataEntity)
{
this.facilityDataEntity=facilityDataEntity;
this.shopOrderDataEntity=shopOrderDataEntity;
}
公共ShopOrderDataEntity ShopOrderDataEntity
{
获取{return shopOrderDataEntity;}
}
公共设施数据实体设施数据实体
{
获取{return facilityDataEntity;}
}
public int ShopOrder{get;set;}
公共十进制必需数量{get;set;}
公共字符串ItemCode{get;set;}
公共字符串ItemDescription{get;set;}
公共字符串工具值{get;set;}
公共字符串FacilityLabel{get;set;}
公共静态IEnumerable TranslatedTaEntityList(IEnumerable facilityDataEntityList)
{
foreach(FacilityDataEntity FacilityDataEntity列表中的FacilityDataEntity FacilityDataEntity)
{
返回新的MainViewModel(facilityDataEntity);
}
}
公共静态IEnumerable TranslatedDataEntityList(FacilityDataEntity FacilityDataEntity,IEnumerable shopOrderDataEntityList)
{
foreach(ShopOrderDataEntity shopOrderDataEntityList中的ShopOrderDataEntity)
{
返回新的MainViewModel(facilityDataEntity、shopOrderDataEntity);
}
}
}
在这种情况下,我会说它比较null和null,两者是相同的。我猜这是因为它们都是null
在这一切的背后,这些测试只是使用:
true如果objA与objB是同一实例,或者如果两者都null;否则,false
您是否调试了
facilityDataEntity.Value
和mainViewModel.FacilityValue
的值Assert.ReferenceEquals的问题是一样的,现在它们可能都是null
。我已经调试了测试,是的,它们都是null,但我没有做arequal,所以它们怎么可能是同一个实例?或者它们为null会使它们成为相同的实例,或者更少的实例或者其他什么?它们不是相同的实例。它们都是一样的,缺少一个实例。