[英]Unit Testing - Can't Access Method From Repository Class
我正在编写一个Unit Test ,以验证是否使用正确的数据选择了特定产品。 当前,该测试提供了以下错误:
System.NullReferenceException:对象引用未设置为对象的实例。
在通过测试进行调试时,我注意到我的
result
变量为null ...我以为我正确地调用了SelectProduct
方法,但不确定是什么错误。附加问题 -关于如何更好断言的任何建议?
[TestClass]
public class ProductRepositoryTests
{
[TestMethod]
public void SelectProduct_selectProduct_productIsSelected()
{
// access ProductRepository
Mock<IProductRepository> mock = new Mock<IProductRepository>();
// Arrange - mocked product
Product product1 = new Product
{
ProductId = 1,
ProductName = "Snicker Bar",
ProductPrice = .25M,
ProductCategory = "Candy",
ProductQuantity = 12
};
// Act - select new product using SelectProduct method
var result = mock.Object.SelectProduct(product1.ProductId);
// Assert
Assert.AreEqual(result.ProductId, 1);
Assert.AreEqual(result.ProductName, "Snicker Bar");
Assert.AreEqual(result.ProductPrice, .25M);
}
}
这是我的存储库层的其他代码:
接口:
public interface IProductRepository
{
Product SelectProduct(int productId);
}
储存库类别:
public class ProductRepository : IProductRepository
{
public Product SelectProduct(int productId)
{
throw new System.NotImplementedException();
}
}
您似乎要测试ProductRepository
类,但要测试一个假对象。
测试结果如下所示:
// Arrange
var sut = new ProductRepository(); //sut means System Under Test
...
// Act - select new product using SelectProduct method
var result = sut.SelectProduct(product1.ProductId);
// Assert
....
伪造品(或Mocks)仅用于伪造被测类的依赖关系,而不能伪造类本身。 因此,在此特定测试中,您无需使用模拟框架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.