2013-09-20 2 views
0

Я пытался выполнить тестирование моего хранилища. Мне нужно высмеять предложение Where с некоторыми значениями. Я попытался следующийRhinoMock Stub Linq Где предложение для DbContext

var parentClass = new ParentClass {id = 1}; 

var subClass = new SubClass 
{ 
    id=2, 
    ParentClassId = parentClass.id, 
    ParentClass = parentClass 
} 

var subSubClass = new SubSubClass 
{ 
    id =3, 
    SubClassId = subClass.id, 
    SubClass = subClass 
} 

var dbContext = MockRepository.GenerateMock<IDbContext>(); 
    var subClassContext = MockRepository.GenerateMock<IDbSet<SubClass>>(); 
var subSubClassContext = MockRepository.GenerateMock<IDbSet<SubSubClass>>(); 

subClassContext.Stub(x => x.GetEnumerator()) 
       .Return(null) 
       .WhenCalled(c => c.ReturnValue = new List<SubClass> { subClass }.GetEnumerator()); 

subSubClassContext.Stub(x => x.GetEnumerator()) 
       .Return(null) 
       .WhenCalled(c => c.ReturnValue = new List<SubSubClass> { subSubClass }.GetEnumerator()); 

Я проверяю следующий код

var existingSubSubClasses = context.SubSubClass.Where(cba => cba.SubClass.ParentClassId == parentClassId).ToList(); 

Я получаю ArgumentNullReferenceException

Что я делаю неправильно?

+0

Код в ваших двух фрагментах кода напрямую не связан друг с другом. Что такое «контекст» во втором фрагменте? Это 'dbContext' сверху или что-то другое? –

ответ

-1

Вы также должны заглушить context.SubSubClass property - по-видимому, он возвращает null по умолчанию.

+0

dosen't кажется ответом на мой запрос. – Saanch

Смежные вопросы