目前在我的项目的某个部分存在一个类似以下的领域对象:
public class Address
{
public virtual string HouseName { get; set; }
public virtual string HouseNumber { get; set; }
public virtual string RoadName { get; set; }
public virtual string Postcode { get; set; }
public virtual string District { get; private set; }
}
District属性是数据库中的计算列。由于数据访问提供程序(Entity Framework)的要求,需要一个私有集合。在正常的程序流程中这是没有问题的,因为District永远不需要设置,它会在保存/更新数据库中的地址记录时更新。
我想测试的方法如下:
public IEnumerable<House> GetHousesWithinSameDistrict (int addressId)
{
var addressToMatch = _addressRepository
.FirstOrDefault(address => address.Id == addressId)
return _houseRepository
.Where(house => house.Address.District == addressToMatch.District)
}
当我尝试设置addressToMatch变量时,这给我带来了麻烦,因为我无法设置区域属性,因此我无法编写一个测试来检查是否返回匹配的地址。
那么我该如何设置一个Address对象用于此测试呢?
protected internal
+assembly:InternalsVisibleTo
? - Anton Gogolev