У меня есть модульный тест, вызывающий конструктор с целью передачи значения null, чтобы проверить обработку нуля.
Я ожидаю, что вызванный метод вызовет исключение ArgumentNullException, но когда я перебираю код, я вижу, что параметр действительно инициализирован.
Это поставило меня в тупик, хотя моя интуиция говорит, что это как-то связано с контейнером DI (Castle Windsor).
Кто-нибудь может пролить свет на это?
Мой модульный тест, нулевое значение передается вместе с созданным экземпляром делегата:
[Test]
public void ConstructorThrowsAnExceptionWhenImplementationCollectionIsNull()
{
//assert
Assert.Throws<ArgumentException>(() => new CacheImplementationSelector(null, _stubCacheImplementationSelectorDelegate));
}
Вызванный метод:
public CacheImplementationSelector(ICollection<ICacheImplementation> implementations, CacheImplementationSelectorDelegate selectorDelegate)
{
implementations.IsNotNullArgCheck("implementations");
...
При наведении курсора мыши на параметр реализаций с кодом, остановленным на точке останова в CacheImplementationSelectorMethod, Visual Studio сообщает мне, что параметр "реализации" имеет число 1, а [0] равно нулю.
Я использую ReSharper для запуска теста NUnit.
Для полноты TestFixtureSetup и SetUp являются следующими:
[TestFixtureSetUp]
public void FixtureSetUp()
{
_mocks = new MockRepository();
}
[SetUp]
public void Setup()
{
_listOfImplementations = new List<ICacheImplementation>() { _stubICacheImplementation };
_stubCacheImplementationSelectorDelegate = MockRepository.GenerateStub<CacheImplementationSelectorDelegate>();
_stubICacheImplementation = MockRepository.GenerateStub<ICacheImplementation>();
_stubKeyCreator = MockRepository.GenerateStub<ICacheKeyCreator>();
_stubStrategy = MockRepository.GenerateStub<ICachingStrategy>();
_stubEncoder = MockRepository.GenerateStub<ICacheItemEncoder>();
_c = new CacheImplementationSelector(_listOfImplementations, _stubCacheImplementationSelectorDelegate);
_testObject = new object();
_yesterday = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0));
_tomorrow = DateTime.Now.Add(new TimeSpan(1, 0, 0, 0));
_testString = "test";
_tooLongKey = "a".Repeat(Cache.MaxKeyLength+1);
_tooLongFriendlyName = "a".Repeat(Cache.MaxFriendlyNameLength + 1);
}