So I had a solution working on .Net RC1 with Moq, and I've upgraded to RC2 which I found that Moq.netcore was created to run on the new platform.
I added aspnet-contrib to my NuGet.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="contrib" value="https://www.myget.org/F/aspnet-contrib/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
I've added moq.netcore to my project.json file.
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-*",
"type": "platform"
},
"dotnet-test-xunit": "1.0.0-rc2-173361-36",
"moq.netcore": "4.4.0-beta8",
"xunit": "2.1.0"
},
"testRunner": "xunit",
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net451+win8"
]
}
}
Basically I followed Cli Testing Abstractions UnitTests and I get the following error when instantiatin a Mock object:
System.IO.FileNotFoundException :
Could not load file or assembly 'System.Diagnostics.TraceSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Stack Trace:
at Castle.DynamicProxy.Generators.MethodWithInvocationGenerator.BuildProxiedMethodBody(MethodEmitter emitter, ClassEmitter class, ProxyGenerationOptions options, INamingScope namingScope)
at Castle.DynamicProxy.Generators.MethodGenerator.Generate(ClassEmitter class, ProxyGenerationOptions options, INamingScope namingScope)
at Castle.DynamicProxy.Contributors.CompositeTypeContributor.ImplementMethod(MetaMethod method, ClassEmitter class, ProxyGenerationOptions options, OverrideMethodDelegate overrideMethod)
at Castle.DynamicProxy.Contributors.CompositeTypeContributor.Generate(ClassEmitter class, ProxyGenerationOptions options)
at Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(String name, Type[] interfaces, INamingScope namingScope)
at Castle.DynamicProxy.Generators.BaseProxyGenerator.ObtainProxyType(CacheKey cacheKey, Func`3 factory)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)
at Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments)
at Moq.Mock`1.<InitializeInstance>b__19_0()
at Moq.Mock`1.OnGetObject()
at Moq.MockDefaultValueProvider.ProvideDefault(MethodInfo member)
at Moq.QueryableMockExtensions.FluentMock[T,TResult](Mock`1 mock, Expression`1 setup)
at lambda_method(Closure )
at Moq.Mock.GetInterceptor(Expression fluentExpression, Mock mock)
at Moq.Mock.<>c__DisplayClass57_0`2.<SetupGet>b__0()
Moq - Unit Test In .NET Core App Using Mock Object. The Unit test is a block of code that helps us in verifying the expected behavior of the other code in isolation; i.e., there is no dependency between the tests. This is good way to test the application code before it goes for quality assurance (QA).
This library also supports .NET Core. The Moq library can be added to test projects either by package manager or .NET CLI tool. In the following example, controller class required constructor dependency to create the instance.
A mock version of something is an object that can act like the real thing but can be controlled in test code. Moq (pronounced “mok u” or “mock”) is a library available on NuGet that allows mock objects to be created in test code and it also supports .NET Core.
The Moq library can be added to test projects either by package manager or .NET CLI tool. In the following example, controller class required constructor dependency to create the instance.
Edit: this trick is no longer necessary with Moq > 4.6.38-alpha:
"dependencies" {
"Moq": "4.6.38-alpha"
}
This bug is likely caused by the fact System.Diagnostics.TraceSource
is not directly referenced by the moq package and thus is not imported transitively in your project. To work around this limitation, you can explicitly reference the System.Diagnostics.TraceSource
package:
Here's how we use it in our OAuth2 validation middleware tests project, that runs on both .NET Desktop and .NET Core:
{
"buildOptions": {
"warningsAsErrors": true
},
"dependencies": {
"AspNet.Security.OAuth.Validation": { "target": "project" },
"dotnet-test-xunit": "1.0.0-rc2-build10015",
"Microsoft.AspNetCore.TestHost": "1.0.0-rc2-final",
"Microsoft.Extensions.Caching.Memory": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Newtonsoft.Json": "8.0.3",
"xunit": "2.1.0"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0-rc2-3002702" },
"moq.netcore": "4.4.0-beta8",
"System.Diagnostics.TraceSource": "4.0.0-rc2-24027"
},
"imports": [
"dnxcore50",
"portable-net451+win8"
]
},
"net451": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1-rc2-24027",
"Moq": "4.2.1312.1622"
}
}
},
"testRunner": "xunit"
}
https://github.com/aspnet-contrib/AspNet.Security.OAuth.Extensions/blob/master/test/AspNet.Security.OAuth.Validation.Tests/project.json#L21
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With