Подтвердить что ты не робот

Издевательская структура для asp.net core 5.0

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

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

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 Core 5.0 в представлении кода, и при выборе ASP.NET Core 5.0 я получаю ошибки, но нет при выборе ASP.NET 5.0. Я попытался найти ответ, но мне не повезло.

Является ли проблема с тем, что Moq не работает с vnext, и я должен использовать другую структуру (если это работает?) или я могу как-то это решить? Мой проект .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"
}

}
4b9b3361

Ответ 1

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

Ответ 2

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

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

  • Зарегистрируйте зависимости 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!:)

Ответ 3

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

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

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

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

Там еще несколько обсуждений этих пунктов здесь по проблеме github о доступности NUnit

Ответ 4

Ссылка: 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