Я пытаюсь смоделировать один из моих центров SignalR, используя Moq в тестовом проекте NUnit. Однако, когда я пытаюсь смоделировать его, я сталкиваюсь со следующим исключением:
System.BadImageFormatException : Could not load file or assembly 'Microsoft.AspNetCore.SignalR.Core, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (0x80131058)
System.BadImageFormatException : Cannot load a reference assembly for execution.
at SocketServerTests.TestHub.Setup()
Мой тестовый проект ссылается на мой "основной" проект, они оба находятся в одном решении, выглядит .csproj тестового проекта как это:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.1" />
<PackageReference Include="Moq" Version="4.13.1" />
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.13.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SocketServer\SocketServer.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.SignalR.Core, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<HintPath>C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0\ref\netcoreapp3.0\Microsoft.AspNetCore.SignalR.Core.dll</HintPath>
</Reference>
</ItemGroup>
В настоящее время (для целей тестирования) мой модульный тест выглядит следующим образом:
public class TestHub
{
private Mock<MasterHub> _hub;
[SetUp]
public void Setup()
{
var loggerFactory = LoggerFactory.Create(builder => { });
var logger = loggerFactory.CreateLogger<MasterHub>();
var roomProvider = new RoomProvider();
var userProvider = new UserProvider();
var dataProvider = new DataProvider(roomProvider, userProvider);
_hub = new Mock<MasterHub>(dataProvider, logger);
}
[Test]
public void MockHub()
{
var boolean = true;
Assert.True(boolean);
}
}
Когда я пытаюсь отладить метод MockHub
, ошибка, указанная выше, возникает.
Что я пробовал до сих пор:
Я на Windows машине. NET Базовая версия 3.0.100. Используется редактор Rider 2019.3.
Что странно, так это то, что он работает на MacOS с Rider 2019.3, я пробовал сегодня, и у меня не было проблем.
Любая помощь приветствуется!