2015-05-28 2 views
1

Я использую JustMock и AutoFac и пытаюсь издеваться массивом довольно простых объектов, но я просто не могу показаться, чтобы получить правильный синтаксис ...Не может издеваться простым массивом объектов с JustMock

 var labResults = Mock.Create<LabResult[]>(); 

     Mock.Arrange(() => labResults).Returns(new LabResult[] 
             { 
              new LabResult 
              { 
               EstablishmentID = "0101", 
               PatientID = "A11111111", 
               EpisodeNo = 1, 
               LabNumber = "975310A", 
               Status = LabResultStatus.Initial, 
               TestCode = "ABCD", 
               DateUpdated = DateTime.Now 
              }, 

              <snip> 

              new LabResult 
              { 
               EstablishmentID = "0101", 
               PatientID = "A11111112", 
               EpisodeNo = 1, 
               LabNumber = "975310A", 
               Status = LabResultStatus.Final, 
               TestCode = "ABC", 
               DateUpdated = DateTime.Now 
              }, 
            }); 

Код компилируется отлично, но при запуске дает мне ошибку «System.ArgumentException» в вызове Mock.Create - «Дополнительная информация: значение было недопустимым».

У меня все утро было в тупике, и я нигде не могу найти подходящий пример. Может кто-нибудь, пожалуйста, скажите мне правильный синтаксис - он должен быть массивом, который возвращается, а не List.

Cheers

ответ

3

Вам не нужен mock. Вы издеваетесь над массивом, который можно так же хорошо создать , просто присвоив значения, которые вы уже получили в Returns, часть макетной настройки. Например:

var labResults = new LabResult[] 
{ 
    new LabResult { ... }, 
    new LabResult { ... }, 
}; 
+0

Это так много. Когда я начал использовать макеты в своих тестах, я в конечном итоге пытался издеваться над всем и всеми. В общем, я только макет/заглушка, когда это дорогостоящий ресурс (т. Е. Когда он использует сеть, IO, DB, ...) или когда я просто хочу проверить правильность сотрудничества между компонентами (т. Е. Проверяет ли моя система вывести правильные сообщения своему сотруднику?). Издевательские коллекции или дешевые и простые в конструкции входные аргументы приводят к большей (и сомнительной ненужной) работе. – prgmtc

+0

Особенно на языке, таком как C#, где вам нужны интерфейсы или виртуальное ключевое слово во всем мире, чтобы насмешливая структура эффективно работала на таком низком уровне. – prgmtc

+0

@ jimmy_keen Ну, durrr ... не чувствую себя дураком. Вы, конечно, совершенно правы, ответ все время говорил мне в лицо. Спасибо. – Mike

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