Перейти к содержимому

mishavin

Регистрация: 08 окт 2015
Offline Активность: 13 окт 2015 17:07
-----

Мои темы

MSTest сборка имитаций не видит COM объекты

09 октября 2015 - 06:25

Доброго времени суток!

 

Вот такой простейший код (показан ниже): мне нужно сделать заглушку для interface IGetMyVal.

Для этого создаю сборку имитаций. Сборка создается, но в ней куча ошибок. Причина - сборка не понимает, что такое Range.

 

Имя типа или пространства имен "Range" отсутствует в пространстве имен "ml1::Microsoft.Office.Interop.Excel" (пропущена ссылка на сборку?) [C:\Users\Admin\documents\visual studio 2013\Projects\MyLib1\UnitTestProject1\obj\Debug\Fakes\ml1\f.csproj] C:\Users\Admin\documents\visual studio 2013\Projects\MyLib1\UnitTestProject1\f.cs 100 117 UnitTestProject1

 

Причем в тестовом модуле ссылку на библиотеки Excel я сделал (Microsoft.Office.Core, Microsoft.Office.Interop.Excel ).

Чтобы ничего лишнего не генерировалось сделал настройку генерации:

 

  <Assembly Name="MyLib1"/>
  <StubGeneration>
    <Clear/>
    <Add Interfaces ="true"/>
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
  </ShimGeneration>
</Fakes>

 

Т.е. у меня генерится только заглушка для интерфейса и ничего более.

 

Вопрос: никто с этим не сталкивался c тестированием, где используются COM объекты? Как избавиться от этой проблемы? 

Как сделать видимым Range? Исправить сгенерированный код я не могу. Он регенерится заново при каждом построении проекта.

 

Пытался задать это вопрос на других формах - тишина. Неужели я первый, кто пишет тест на MSTest, где встречаются COM объекты?  :sad:

 

 

using Excel = Microsoft.Office.Interop.Excel;


namespace MyLib1
{
    public interface IGetMyVal
    {
        string GetMyVal(Excel.Range rng, string startWith);
    }


    public class Class1
    {
        IGetMyVal _GetMyVal;
        public Class1(IGetMyVal GetMyVal)
        {
            _GetMyVal = GetMyVal;
        }


        public string GetStr(Excel.Range rng, string startWith)
        {
            return _GetMyVal.GetMyVal(rng, startWith);
        }
    }
}