Mais conteúdo relacionado Semelhante a Unit Testing and Mocking using MOQ (20) Mais de Bruce Johnson (8) Unit Testing and Mocking using MOQ11. public class Sample{
private DatabaseThingie myDatabase;
public Sample() {
myDatabase = new DatabaseThingie();
}
public void DoStuff() {
myDatabase.GetData();
}
}
Notas do Editor publicvoidProductService_Create_CallsRepositorySave() {varmockProductRepository=newMock<IProductRepository>();mockProductRepository.Setup(r=>r.Save(It.IsAny<Product>()));varservice=newProductService(mockProductRepository.Object);service.Create(newProductViewModel());mockProductRepository.VerifyAll(); } [Test] [ExpectedException(typeof (InvalidProductIdException))]publicvoidProductService_Create_ExceptionIfIdNotCreated() {ProductViewModelproductViewModel=newProductViewModel() { Description="Nice product", Name="ProductA" };varmockProductRepository=newMock<IProductRepository>();mockProductRepository.Setup(r=>r.Save(It.IsAny<Product>()));varmockProductIdBuilder=newMock<IProductIdBuilder>();varservice=newProductService(mockProductRepository.Object, mockProductIdBuilder.Object);service.Create(productViewModel); } [Test]publicvoidProductService_CreateMany_VerifyCallsWereMade() {List<ProductViewModel>productViewModels=newList<ProductViewModel>() {newProductViewModel(){Name="ProductA", Description="Great product"},newProductViewModel(){Name="ProductB", Description="Bad product"},newProductViewModel(){Name="ProductC", Description="Cheap product"},newProductViewModel(){Name="ProductD", Description="Expensive product"} };varmockProductRepository=newMock<IProductRepository>();varmockIdBuilder=newMock<IProductIdBuilder>();mockIdBuilder.Setup(b=>b.BuildProductIdentifier()).Returns(newProductIdentifier());varservice=newProductService(mockProductRepository.Object, mockIdBuilder.Object);service.CreateMany(productViewModels);mockProductRepository.Verify(p=>p.Save(It.IsAny<Product>()), Times.Exactly(productViewModels.Count)); } publicvoidProductService_CreateMany_VerifyCallsWereMadeWithCallbacks() {List<ProductViewModel>productViewModels=newList<ProductViewModel>() {newProductViewModel(){Name="ProductA", Description="Great product"},newProductViewModel(){Name="ProductB", Description="Bad product"},newProductViewModel(){Name="ProductC", Description="Cheap product"},newProductViewModel(){Name="ProductD", Description="Expensive product"} };List<int>productIds=newList<int>();varmockProductRepository=newMock<IProductRepository>();mockProductRepository.Setup(r=>r.Save(It.IsAny<Product>())).Callback<Product>(p=>productIds.Add(p.Identifier.RawValue));varmockIdBuilder=newMock<IProductIdBuilder>();intproductId=1;mockIdBuilder.Setup(b=>b.BuildProductIdentifier()).Returns(() =>newProductIdentifier(){RawValue=productId}).Callback(() =>newProductIdentifier() { RawValue=productId++ });varservice=newProductService(mockProductRepository.Object, mockIdBuilder.Object);service.CreateMany(productViewModels);mockProductRepository.Verify(p=>p.Save(It.IsAny<Product>()), Times.Exactly(productViewModels.Count));vargroupings=fromxinproductIdsgroupxbyxintogletcount=g.Count()orderbycountdescendingselectnew { Value=g.Key, Count=count };foreach (varxingroupings)Assert.IsTrue(x.Count==1); } } [Test]publicvoidProductService_CallCreate_TryThreeTimesOnFailedSave() {varmockProductRepository=newMock<IProductRepository>();mockProductRepository.Setup(r=>r.Save(It.IsAny<Product>())).Throws(newDbConnectionException());varmockIdBuilder=newMock<IProductIdBuilder>();mockIdBuilder.Setup(b=>b.BuildProductIdentifier(It.IsAny<string>())).Returns(newProductIdentifier());varservice=newProductService(mockProductRepository.Object, mockIdBuilder.Object);service.Create(newProductViewModel());mockProductRepository.Verify(r=>r.Save(It.IsAny<Product>()), Times.Exactly(3)); }