2015-01-13 5 views
23

Недавно я установил Visual Studio 2015 и начал проект с веб-сайта и библиотеки классов asp, которая будет содержать модульные тесты для веб-сайта. Я обычно использую Moq для насмешек, но я не чужд, чтобы попробовать другую насмешливую структуру. Проблема, с которой я сталкиваюсь, заключается в том, что я добавил Moq в качестве ссылки на проект модульного тестирования и начал его использовать. Сначала все кажется прекрасным, пока я не попытался скомпилировать.Mocking framework для asp.net core 5.0

Когда я собирал я получил сообщение об ошибке, говорящее:

ASP.NET Core 5.0 error CS0246: The type or namespace name 'Moq' could not be found (are you missing a using directive or an assembly reference?)

я заметил, что я мог переключаться между ASP.NET 5.0 и ASP.NET 5.0 Ядром в представлении кода и при выборе ASP.NET Core 5.0 Я получаю ошибки, но нет при выборе ASP.NET 5.0. Я попытался найти ответ, но мне не повезло.

Проблема в том, что Moq не работает с vnext, и я должен использовать другую структуру (если это работает?) Или я могу как-то решить это? Мой project.json:

{ 
"version": "1.0.0-*", 
"dependencies": { 
    "Web": "1.0.0-*", 
    "Xunit.KRunner": "1.0.0-beta1", 
    "xunit": "2.0.0-beta5-build2785", 
    "Moq": "4.2.1409.1722" 
}, 

"frameworks": { 
    "aspnet50": { 
     "dependencies": { 
     } 
    }, 
    "aspnetcore50": { 
     "dependencies": { 
     } 
    } 
}, 
"commands": { 
    "test": "Xunit.KRunner" 
} 

} 
+0

У меня есть написал блог об этом. посмотрите здесь: https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/ – Neel

ответ

8

Я полагаю, что до сих пор версия Moq, которая работает с asp.net ядра 5.0 не доступен в корме NuGet, но я думаю, что вы можете работать с Asp.Net 5.0.

+2

Я удалил «aspnetcore50»: {«dependencies»: {}}, и он начал работать – user1842278

+0

Lukasz Pyrzyk имеет обновленный ответ ниже, который получает Moq, работающий с aspnetcore50. –

4

Вы должны иметь возможность использовать большинство библиотек с каркасом aspnet50, так как это работает с теми же структурами/CLR «стиль», которые были доступны в предыдущих .NET-инфраструктурах. Это будет включать Moq/Rhino/Nunit и т. Д.

В aspnetcore50 вы используете новый CoreCLR и должны использовать зависимости, которые также переключаются на работу с новыми библиотеками CoreCLR. Xunit уже это сделал, так как команды MS делали это так, чтобы они могли тестировать блок, следовательно, это доступность. Я не знаю, что еще есть насмешливая структура, но я ищу ее.

Поэтому, если вы ограничиваете свой проект только использованием рамки aspnet50, удалив aspnetcore50, тогда вы должны быть в порядке, чтобы использовать что угодно.

Обратите внимание, что это дает вам ограничение, на которое вы можете выполнить только те тесты, где доступно основное CLR. Это может быть ограничительным для вас, если вы планируете свое приложение запускаться на CoreCLR при его развертывании (поскольку вы не строго проверяете одно и то же вещество, хотя они должны быть эквивалентными).

Там еще некоторые дискуссии по этим вопросам here on a github issue about NUnit availability

26

ASP.NET команда из Microsoft создала специальную версию Moq для внутреннего использования. Вы можете найти проект вилки на asp.net github page.

Как это использовать?

  • зарегистрировать MOq зависимостей в project.json:

    { 
        "frameworks": { 
         "dnx451": { 
          "dependencies": { 
           "Moq": "4.2.1312.1622" 
          } 
         }, 
         "dnxcore50": { 
          "dependencies": { 
           "moq.netcore": "4.4.0-beta8" 
          } 
         } 
        } 
    } 
    
  • Создайте файл NuGet.config в домашнем каталоге проекта.

    <?xml version="1.0" encoding="utf-8"?> 
        <configuration> 
         <packageSources> 
          <add key="AspNetVNext" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" /> 
          <add key="NuGet" value="https://api.nuget.org/v3/index.json" /> 
         </packageSources> 
        </configuration> 
    

И использовать Moq!:)

+2

Мне нужно было установить значение AspNetVNext на 'https: // www.myget.org/F/aspnet-contrib/api/v3/index.json', чтобы найти moq.netcore. –

+1

Дополнительная информация о добавлении нового канала NuGet для добавления Moq в dnxcore50, предоставленного в блоге Армена Shimoon (http://dotnetliberty.com/index.php/2016/02/22/moq-on-net-core/) (с картинками!) – brntsllvn

+2

ссылка [asp.net github page] (https://github.com/aspnet/moq4) в начале этого ответа 404 сломана. – gerryLowry

0

Ссылка от: https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/

Вы должны добавить ниже конфигураций в project.json

{ 
    "version": "1.0.0-*", 
    "description": "AspNetCoreMoq.Test Class Library", 
    "authors": [ "armen" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 

    "frameworks": { 
     "dnxcore50": { 
      "dependencies": { 
       "Microsoft.CSharp": "4.0.1-beta-23516", 
       "System.Collections": "4.0.11-beta-23516", 
       "System.Linq": "4.0.1-beta-23516", 
       "System.Runtime": "4.0.21-beta-23516", 
       "System.Threading": "4.0.11-beta-23516", 
       "AspNetCoreMoq": "", 
       "xunit": "2.1.0-rc1-build3168", 
       "xunit.runner.dnx": "2.1.0-rc1-build204", 
       "moq.netcore": "4.4.0-beta8" 
      } 
     } 
    }, 
    "commands": { 
     "test": "xunit.runner.dnx" 
    } 

} 

А затем создать NuGet кормить ниже URL:

https://www.myget.org/F/aspnet-contrib/api/v3/index.json

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