1
제품 모델을 저장소에 삽입하는 논리가 있습니다. 논리 조각은 저장소에 서로 다른 데이터가있는 두 개의 제품 모델을 삽입 할 것이므로이 메서드는 각 제품에 한 번씩 두 번만 호출되도록 테스트해야합니다.JustMock을 사용하면 다른 객체가 전달 된 상태에서 메서드가 두 번 호출되었는지 어떻게 테스트 할 수 있습니까?
public interface IProductRepo
{
void AddProduct(IProductModel productModel);
}
public class ProductFactory
{
IProductRepo productRepository;
public ProductFactory(IProductRepo productRepo)
{
this.productRepository = productRepo;
}
public void AddProduct(IProductModel productModel)
{
this.productRepository.AddProduct(productModel);
}
}
[TestMethod]
public void test()
{
IProductModel productOne = Mock.Create<IProductModel>();
Mock.Arrange(() => productOne.Name).Returns("ProductOne");
Mock.Arrange(() => productOne.Price).Returns(99);
IProductModel productTwo = Mock.Create<IProductModel>();
Mock.Arrange(() => productTwo.Name).Returns("ProductTwo");
Mock.Arrange(() => productTwo.Price).Returns(10);
IProductRepo productRepo = Mock.Create<IProductRepo>();
ProductFactory factory = new ProductFactory(productRepo);
factory.AddProduct(productOne);
factory.AddProduct(productTwo);
// Test to see that both of these products being added called the IProductRepo.AddProduct() method.
}
이 접근 방식을 고려했지만 제품 모델 내부의 데이터가 수정되지 않았 음을 확인했습니다. 제품 모델의 속성을 확인하여 예상 한 값과 동일한 값을 확인하고 싶습니다. – Eritey
@Eritey 그러면 assert를 두 번 호출 할 수 있습니다. 각 모델마다 하나씩. – Nkosi