Ove*_*ine 9 c# asp.net-mvc unit-testing ninject
我正在尝试使用ninject和visual studio 2012的单元测试项目来测试我的服务.我的注入在我的控制器上工作正常,但是当我尝试在单元测试类中做同样的事情时,我得到了一个Exception.
System.NullReferenceException: Object reference not set to an instance of an object.
namespace Trex.UnitTests
{
[TestClass]
public class GiftServiceTests
{
private IGiftService _giftService;
public void GiftServiceTest(IGiftService giftService)
{
_giftService = giftService;
}
[TestMethod]
public void AddGift()
{
var list = _gift.FindAll(); <--- this line throw an exception
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为注射有问题,但我不明白.
EL *_*bov 11
它看起来像是一个错字 _giftService.此外,[TestInitialize]需要在构造函数中使用属性.
通过放置正确的服务名称_giftService来尝试以下代码 - 您的代码正在注入:
var list = __giftService.FindAll();
Run Code Online (Sandbox Code Playgroud)
编辑:单元测试应该在没有Ninject的情况下完成.只需创建一个被测对象的实例,并手动为每个依赖注入一个模拟.
这里是一个样本有[TestInitialize]:
单元测试必须具有默认构造函数:
[TestClass]
public class TestControllersHomeController
{
private HomeController _sut;
[TestInitialize]
public void MyTestInitialize()
{
var kernel = NinjectWebCommon.CreatePublicKernel();
_sut = kernel.Resolve<HomeController>();
}
[TestMethod]
public void TestIndex()
{
var result = _sut.Index();
Assert.IsNotNull(result);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14178 次 |
| 最近记录: |