如何模拟可跟踪的存储库



我是第一次进行单元测试。我想模拟一个可跟踪存储库。这与嘲笑普通的存储库不同吗?我有疑问,因为我正在创建一个简单的存储库,而我要测试的使用可跟踪存储库的方法不接受它。你能提供一个简单例子来模拟可跟踪存储吗。我正在使用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);
}
});
}

提前感谢。。。。

[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)

希望它能给你一些见解

最新更新