我第一次进行单元测试。我想模拟一个可跟踪的存储库。它与模拟普通存储库不同吗?我很怀疑,因为我正在创建一个简单的存储库,而使用可跟踪存储库的要测试的方法没有接受它。您能否提供一个简单的示例来模拟可跟踪的存储库。 我正在使用DI通过这样的存储库:
public CountryService(ITrackableRepository<Country> repository) : base(repository)
{
}
,我想测试是否通过Upsert方法插入了国家/地区:
public void UpsertCountries(Country[] countries)
{
countries.ToList().ForEach(country =>
{
if (Repository.Queryable().Any(c => c.ForeignId == country.ForeignId))
{
UpdateCountry(country);
}
else
{
Repository.Insert(country);
}
});
}
提前谢谢。...
答案 0 :(得分:1)
[Test]
public void YourTest()
{
//Arrange
var mockRepo = new Mock<ITrackableRepository<Country>>();
var service = new CountryService(mockRepo.Object);
var countryArray = new Country[]{};
//Act
service.UpdateCountry(countryArray);
//Assert
mockRepo.Verify(repo => repo.Insert(It.IsAny<Country>()), Time.Once);
}
如果您想为您的仓库设置一些行为,您可以按照以下方式进行操作:
mockRepo.Setup(repo => repo.PropertyName).Returns(//return something)
希望它会给您一些见识