Не удается создать прокладку для System.Data.SqlClient.SqlDataReaderSmi.

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

Вот мой код:

<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];
            }
        };

В общем, мне нужно использовать подделки в моем модульном тестировании. Когда я пытаюсь удалить следующую строку о SqlDataReader в файле Fakes

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

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

«Тип или имя пространства имен« ShimSqlDataReader »не удалось найти (вам не хватает директивы использования или ссылки на сборку?)

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


person MStrad    schedule 21.06.2016    source источник
comment
Почему? У вас уже есть интерфейс и абстрактный базовый класс, которые вы могли бы использовать.   -  person Jonathan Allen    schedule 22.06.2016
comment
Что такое SqlDataReaderSmi?   -  person Jonathan Allen    schedule 22.06.2016
comment
@JonathanAllen Я обновил вопрос, чтобы уточнить его.   -  person MStrad    schedule 22.06.2016


Ответы (1)


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

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

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

<Add FullName="System.Data.SqlClient.SqlDataReader!"/>
person MStrad    schedule 22.06.2016