2016-11-24 4 views
-1

Я создаю единичный тест, и я использую новички из носорога (я никогда не работал с какими-либо издевательствами раньше, (если вы, ребята, знаете, как с ним справиться с другой макетной картой, пожалуйста покажите мне несколько примеров)).Mocking Generic unit unit test

В моем сценарии я пытаюсь издеваться следующим общему репозиторий

public interface Repository 
{ 
    IEnumerable<TEntity> Search(Expression<Func<TEntity, bool>> filter = null, 
    Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> order = null); 
} 

Моего блок тест:

_classRepository.Stub(x => x.Search(myclass => 
          myclass.id == 1 && 
          ).Return(arrayClass.AsQueryable()); 

класс массива имеет только один регистр с идентификатором 1.

Когда я запускаю свой тест, я получаю следующее сообщение:

Value cannot be null. Parameter name: source

+0

Моя ошибка о названии вопроса: (Unit) –

+0

Тогда просто [править] (http://stackoverflow.com/posts/40792410/edit) название вопроса. Также вопрос не завершен. предоставить [mcve], который воспроизводит проблему. – Nkosi

+1

@MarioGuadanhim заглушка, которую вы добавили, имеет опечатку, она не будет компилироваться ... пожалуйста, вы закончите UT. –

ответ

0

Я решил свою проблему, когда изменил свою фальшивую структуру на Moq. Так что я мог бы использовать лямбда-выражения в моей макетной настройке.

_myclassRepository.Setup(x => x.Search(
      myclass => myclass.id == 1, 
      It.IsAny<Func<IQueryable<MyClass>, IOrderedQueryable<MyClass>>>(), 
      It.IsAny<string>(), 
      It.IsAny<int>())).Returns(arrMyClass); 
+1

Перед обновлением до Moq вы исправили ошибку синтаксиса в исходном коде? '_classRepository.Stub (x => x.Search (myclass => myclass.id == 1 && ) .Return (arrayClass.AsQueryable());' – ColinM

+0

да, я действительно, нет ошибки sintax, I просто улучшил мой код, чтобы опубликовать здесь, тогда я забыл удалить «&&», –