Я спокойно отношусь к Moq Framework и унитазам. моя цель состоит в том, чтобы вставить некоторую информацию в макет объекта и хотеть иметь возможность подсчитать количество объектов, вставленных с текущим значением.Использование метода подсчета
Я строю свой дразнят следующим образом:
var mockCpmSqlDbContext = new Mock<CpmSqlDbContext>();
var mockSetPolicies = new Mock<DbSet<Policies>>();
var dataStore = new List<Policies>
{
new Policies
{
PolicyID = 1,
PolicyName = "policy1",
PolicyDesc = "policy1desc"
},
new Policies
{
PolicyID = 2,
PolicyName = "policy2",
PolicyDesc = "policy2desc"
},
};
var policyData = dataStore.AsQueryable();
mockSetPolicies.As<IQueryable<Policies>>().
Setup(m => m.Provider).Returns(policyData.Provider);
mockSetPolicies.As<IQueryable<Policies>>().
Setup(m => m.Expression).Returns(policyData.Expression);
mockSetPolicies.As<IQueryable<Policies>>().
Setup(m => m.ElementType).Returns(policyData.ElementType);
mockSetPolicies.As<IQueryable<Policies>>().
Setup(m => m.GetEnumerator()).Returns(policyData.GetEnumerator());
mockSetPolicies.Setup(x => x.Create<Policies>()).Returns(() => new Policies());
mockSetPolicies.Setup(x => x.Add(It.IsAny<Policies>())).Callback<Policies>(dataStore.Add);
mockSetPolicies.As<IQueryable<Policies>>().Setup(m => m.GetEnumerator()).Returns(() => policyData.GetEnumerator());
mockSetPolicies.Setup(x => x.Find(It.IsAny<Policies>()));
mockCpmSqlDbContext.Setup(m => m.Policies).Returns(mockSetPolicies.Object);
var service = new MSsqlProvider(mockCpmSqlDbContext.Object);
я в настоящее время две политики в моем макете контексте. Я хотел бы добавить еще две политики с тем же именем «policy2», поэтому после добавления у меня будет три объекта с именем политики «policy2».
service.AddPolicy(new Policies {PolicyID = 3, PolicyName = "policy2", PolicyDesc = "pDesc3"});
service.AddPolicy(new Policies { PolicyID = 4, PolicyName = "policy2", PolicyDesc = "pDesc3" });
мой добавить функцию политики:
public void AddPolicy(Policies policy)
{
_dbEntities.Policies.Add(policy);
_dbEntities.SaveChanges();
}
код, который проверяет утверждение:
//Assert
var expected = 3;
//first, can I know how many object I have the policy name "policy2".
var actual = mockSetPolicies.Object.Count(p => p.PolicyName == "policy2");
//second, can I assert the number of objects I have currently with the name "policy2".
Assert.AreEqual(expected, actual);
этот код теперь работает currectly
Можете ли вы предоставить дополнительную информацию о методе 'AddPolicy', пожалуйста. Какова реализация? Возможно, вы можете проверить вызовы на 'AddPolicy', но только если метод _virtual_. Или вы добавляете новый _interface_ в 'MSsqlProvider' с' AddPolicy' –
@Dominik Herold добавлена политика была добавлена –