아무 것도 반환하지 않는 메서드의 단위 테스트를 수행하려고합니다. 나는 이것을 위해 xUnit을 사용하고있다. Google에서 검색하지만 메소드가 반환하는 모든 부분을 검색합니다.xUnit을 사용하여 Void 메소드를 테스트하는 방법은 무엇입니까?
여기 내 코드입니다 :
나의 등급 :
public class ShopRepository : BaseRepository<ShopInformation>
{
public ShopRepository(IDbContext dbContext)
: base(dbContext)
{
}
public override void Update(ShopInformation entity)
{
if(GetAll().Any())
base.Update(entity);
else
base.Add(entity);
}
public ShopInformation ShopInformation()
{
return GetAll().FirstOrDefault();
}
}
내 테스트 :
나는base.Update(entity);
통화인지 확인
ShopRepository
클래스의
Update
방법을 테스트해야
[Fact]
public void GetAllTest()
{
var data = new List<ShopInformation>
{
new ShopInformation { Name = "BBB" },
new ShopInformation { Name = "ZZZ" },
new ShopInformation { Name = "AAA" },
}.AsQueryable();
var mockSet = Mock.Create<DbSet<ShopInformation>>();
Mock.Arrange(() => ((IEnumerable<ShopInformation>)mockSet).GetEnumerator()).Returns(data.GetEnumerator);
Mock.Arrange(() => ((IQueryable<ShopInformation>)mockSet).Provider).Returns(data.Provider);
Mock.Arrange(() => ((IQueryable<ShopInformation>)mockSet).Expression).Returns(data.Expression);
Mock.Arrange(() => ((IQueryable<ShopInformation>)mockSet).ElementType).Returns(data.ElementType);
Mock.Arrange(() => ((IQueryable<ShopInformation>)mockSet).GetEnumerator()).Returns(data.GetEnumerator());
var interDbContext = Mock.Create<IDbContext>();
interDbContext.Arrange(x => x.Set<ShopInformation>()).Returns(mockSet);
var companyRepository = new ShopRepository(interDbContext);
companyRepository.Update(new ShopInformation());
//???????????????
}
. 그러나 그것을하는 방법을 이해하지 마십시오.
내가 사용하고 있습니다 :
- 비주얼 스튜디오 2013 얼티밋.
- 그냥 모의 2013.3.1015
- xUnit의이 개 가능한 솔루션이 1.9.2