2016-06-21 4 views
0

Вот эта ошибка: «Невозможно создать прокладку для System.Data.SqlClient.SqlDataReaderSmi: теперь тип теперь доступен для экспорта или сборки (System.Data.4.0.0.0.Fakes .)Cannote generate shim для System.Data.SqlClient.SqlDataReaderSmi

Вот мой код:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true"> 
    <Assembly Name="System.Data" Version="4.0.0.0"/> 
    <StubGeneration> 
    <Clear/> 
    </StubGeneration> 
    <ShimGeneration> 
    <Clear/> 
    <Remove FullName="System.Data.SqlClient"/> 
    <!--Added Classes--> 
    <Add FullName="System.Data.SqlClient.SqlCommand!"/> 
    <Add FullName="System.Data.SqlClient.SqlConnection!"/> 
    <Add FullName="System.Data.SqlClient.SqlDataRead"/> 
    </ShimGeneration> 
</Fakes> 

в моих модульных тестах я насмешливый SqlDataReader как так:

var statReqReader = new ShimSqlDataReader() 
     { 
      Read =() => 
      { 
       if (dsrIndexCounter < testCaseCount) 
       { 
        dsrIndexCounter++; 
        return true; 
       } 
       return false; 
      }, 
      ItemGetString = (val) => 
      { 
       // [] operator 
       return dtStatReq.Rows[dsrIndexCounter - 1][val]; 
      } 
     }; 

в общем, мне нужно использовать Фальшивки в моем тестировании Unit , При попытке удалить следующую строку о SqlDataReader в Подделки файл

<Add FullName="System.Data.SqlClient.SqlDataRead"/> 

Я дал следующее сообщение об ошибке:

«Тип или пространство имен имя„ShimSqlDataReader“не может быть найден (вы отсутствует с помощью директивы или ссылка на сборку?)

Я дразнить SqlDataReader и нужно использовать Фальшивок. Что я делаю неправильно?

+0

Почему? У вас уже есть интерфейс и абстрактный базовый класс, который вы могли бы использовать. –

+0

Что такое «SqlDataReaderSmi»? –

+0

@JonathanAllen Я обновил вопрос, чтобы перейти к более подробному описанию. – MStrad

ответ

0

Я понял мою проблему. Вот что убрали ошибку.

1.I добавил пример функции mock, чтобы увидеть класс Shim SqlDataReader. Как только я нашел это, я понял, что я написал имя в файле Fakes достаточно точно.

2.Задача окончательного добавления с приведенной ниже строкой кода устраняет проблему.

<Add FullName="System.Data.SqlClient.SqlDataReader!"/> 

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

  • Нет связанных вопросов^_^