【发布时间】:2015-12-06 21:05:23
【问题描述】:
我正在编写一个单元测试,用于验证特定产品的选择是否具有正确的数据。目前,测试提供以下错误:
System.NullReferenceException:对象引用未设置为对象的实例。
在通过测试进行调试时,我注意到我的
result变量为空...我以为我正确调用了我的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);
}
}
这是我的 Repository 层的其他代码:
界面:
public interface IProductRepository
{
Product SelectProduct(int productId);
}
存储库类:
public class ProductRepository : IProductRepository
{
public Product SelectProduct(int productId)
{
throw new System.NotImplementedException();
}
}
【问题讨论】:
-
本次测试中您的被测系统是什么?看来您正在测试一个模拟/假对象,而不是一个真正的类。
-
这是一个很好的问题@YacoubMassad...我正在尝试在我的 ProductRepository 中测试该方法。这有帮助吗?请记住,我还没有实现我的 SelectProduct 方法,所以我可以遵循 TDD
标签: c# asp.net unit-testing moq