Я использую NHibernate для сохранения этой сущности:
public class Store
{
public int Id { get; protected set; }
public int Name { get; set; }
}
Обратите внимание, что свойство Id
имеет защищенный установщик.Это сделано для того, чтобы пользователи не могли изменить Id
, в то же время позволяя NHibernate назначать ему Id
при сохранении его в базе данных.
В одном из моих модульных тестов я использую Moq сследующий код для макета моего репозитория:
var mock = new Mock<IRepository>();
mock.Setup(x => x.GetById<Store>(It.IsAny<int>()))
.Returns(new Store { Value = "Walmart" }); // can't set the ID here
var store = Repository.GetById<Store>(5);
Assert.That(store.Id == 5);
Когда я говорю Moq вернуть новый экземпляр Store
, я не могу присвоить идентификатор, и модульный тест не пройден.Как мне протестировать это свойство?Я не хочу изменять уровень доступа к свойству, потому что я не хочу, чтобы пользователи изменяли его вручную, и все же это именно то, что я должен сделать здесь, чтобы проверить его.