我正在尝试从Microsoft Sync Framework模拟一个类.它只有一个内部构造函数.当我尝试以下内容时:
var fullEnumerationContextMock = new Mock<FullEnumerationContext>();
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
System.NotSupportedException:Parent没有默认构造函数.必须显式定义默认构造函数.
这是堆栈跟踪:
System.Reflection.Emit.TypeBuilder.DefineDefaultConstructorNoLock(MethodAttributes attributes)System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(MethodAttributes attributes)System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()System.Reflection.Emit.TypeBuilder.CreateType()Castle. DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type [] interfaces,ProxyGenerationOptions options)Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options)Castle. DynamicProxy.ProxyGenerator.CreateClassProxyType(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options)Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options,Object [] constructorArguments,IInterceptor [] interceptors)Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options,IInterceptor [] interceptors)Castle.DynamicProxy .ProxyGenerator.CreateClassProxy(类型classToProxy,Type [] additionalInterfacesToProxy,IInterceptor []拦截器)Moq.MockDynamicProxy.ProxyGenerator.CreateClassProxy(类型classToProxy,Type [] additionalInterfacesToProxy,IInterceptor []拦截器)Moq.MockDynamicProxy.ProxyGenerator.CreateClassProxy(类型classToProxy,Type [] additionalInterfacesToProxy,IInterceptor []拦截器)Moq.Mock
1.<InitializeInstance>b__0() Moq.PexProtector.Invoke(Action action) Moq.Mock1.InitializeInstance()
我该如何解决这个问题呢?
上下文
在XUnit github中我发现了这个:添加Assert.Equal(预期,实际,消息)重载#350 (所以开发人员要求不存在的重载请参见下文)
引用答案:
我们相信自我记录的代码; 包括你的断言.
(所以XUnit团队拒绝它)
好,我知道了.我也相信自我记录代码.我还是找不到这个用例:
样品
// Arrange
// Create some external soap service client and its wrapper classes
// Act
// client.SomeMethod();
// Assert
// Sorry, soap service's interface, behaviour and design is *given*
// So I have to check if there is no Error, and
// conveniently if there is, then I would like to see it in the assertion message
Assert.Equal(0, client.ErrorMessage.Length); // Means no error
// I would like to have …Run Code Online (Sandbox Code Playgroud) 嗨,我是Moq框架的新手,对如何使用它有一些疑问.我将举一个例子并希望得到答案.
我有两个类,一个接口和一个实现:
public class Vehicle{
public string RegistrationNumber {get; set;}
public long VehicleIdentifier { get; set; }
public Tyre TyreSpecification { get; set; }
}
public class Tyre {
public long NumberOfTyres {get; set;}
public long TyreSize { get; set;}
}
public interface ISelecter {
Vehicle GetVehicleByRegistrationNumber(string registrationNumber);
Tyre GetTyreSpecification(long vehicleIdentifier);
}
public class Selecter : ISelecter
{
public Vehicle GetVehicleByRegistrationNumber(string registrationNumber)
{
var vehicle = 'Database will give us the vehicle specification';
//Then we do things with the vehicle …Run Code Online (Sandbox Code Playgroud) 我正在为后台工作者创建一个UrlHelper来创建回调网址,这意味着它不是正常请求的一部分,我可以通过DI请求它.
在ASP.Net 5中,我可以创建一个HttpRequest并为它提供与构建我的应用程序相同的HttpConfiguration,但在ASP.Net Core 2.0中,UrlHelper依赖于完整的ActionContext,这有点难以制作.
我有一个工作原型,但它正在使用一个令人讨厌的黑客走私应用程序启动过程中的路由数据.有一个更好的方法吗?
public class Capture
{
public IRouter Router { get; set; }
}
public static class Ext
{
// Step 1: Inject smuggler when building web host
public static IWebHostBuilder SniffRouteData(this IWebHostBuilder builder)
{
return builder.ConfigureServices(svc => svc.AddSingleton<Capture>());
}
// Step 2: Swipe the route data in application startup
public static IApplicationBuilder UseMvcAndSniffRoutes(this IApplicationBuilder app)
{
var capture = app.ApplicationServices.GetRequiredService<Capture>();
IRouteBuilder capturedRoutes = null;
app.UseMvc(routeBuilder => capturedRoutes = routeBuilder);
capture.Router = capturedRoutes?.Build();
return app;
} …Run Code Online (Sandbox Code Playgroud) 我使用ASP.NET Core 2.0在Visual Studio 2017中创建了一个默认项目.我选择了带有MVC和个人使用身份验证的Web应用程序.默认情况下,它即将配置并使用https.我已经尝试通过进入项目属性并删除用户ssl并将https更改为http来禁用它,但后来我得到了IIS Express连接错误或404.
我之前没有看到默认的https.来自何处以及在哪里可以禁用它?
visual-studio iis-express asp.net-core visual-studio-2017 asp.net-core-2.0
通常在 .NET Core 项目中,我会创建一个“boostrap”类来配置我的服务以及 DI 注册命令。这通常是一个扩展方法IServiceCollection,我可以在其中调用类似的方法,.AddCosmosDbService并且在包含该方法的静态类中所需的一切都是“自包含”的。但关键是该方法IConfiguration从Startup类中获取。
我过去曾在 Azure Functions 中使用 DI,但尚未遇到此特定要求。
当函数部署在 Azure 中时,我使用IConfiguration来绑定到具有与我的local.settings.json以及开发/生产应用程序设置中的设置匹配的属性的具体类。
/// <summary>
/// Holds configuration settings from local.settings.json or application configuration
/// </summary>
public class CosmosDbClientSettings
{
public string CosmosDbDatabaseName { get; set; }
public string CosmosDbCollectionName { get; set; }
public string CosmosDbAccount { get; set; }
public string CosmosDbKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public static class BootstrapCosmosDbClient
{
/// …Run Code Online (Sandbox Code Playgroud) c# dependency-injection azure-functions .net-core-configuration
我\xe2\x80\x99m 尝试按照本文中的建议从新的 Azure.Messaging.ServiceBus 包注册以进行依赖项注入,ServiceBusClient但我无法\xe2\x80\x99m 找到任何文档或任何在线帮助来了解具体如何进行对这个。ServiceBusClientBuilderExtensions
我正在尝试添加如下
\npublic override void Configure(IFunctionsHostBuilder builder)\n{\n ServiceBusClientBuilderExtensions.AddServiceBusClient(builder, Typsy.Domain.Configuration.Settings.Instance().Connections.ServiceBusPrimary);\n}\nRun Code Online (Sandbox Code Playgroud)\n但我收到错误
\n\n\n\n类型“Microsoft.Azure.Functions.Extensions.DependencyInjection.IFunctionsHostBuilder”必须可转换为“Azure.Core.Extensions.IAzureClientFactoryBuilder”,才能将其用作通用方法中的参数“TBuilder” IAzureClientBuilder<ServiceBusClient,ServiceBusClientOptions> Microsoft.Extensions.Azure.ServiceBusClientBuilderExtensions.AddServiceBusClient(此 TBuilder, 字符串)\'
\n
如果有人能帮忙解决这个问题那就太好了!
\n我想创建一个新的Handler,它扩展了DelegatingHandler,使我能够在进入控制器之前做一些事情.我已经在各个地方读过我需要从DelegatingHandler继承,然后像这样覆盖SendAsync():
public class ApiKeyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// do custom stuff here
return base.SendAsync(request, cancellationToken);
}
}
Run Code Online (Sandbox Code Playgroud)
这是好的和花花公子,除了它没有做任何事情,因为我没有在任何地方注册!我再次在很多地方看到我应该在WebApiConfig.cs中这样做,但这不是Web API 的ASP.NET 核心版本的一部分.我试图找到类似于Startup.cs文件(Configure(),ConfigureServices()等)中的各种东西,但没有运气.
任何人都可以告诉我如何注册我的新处理程序?
c# asp.net-web-api asp.net-core-mvc asp.net-core asp.net-core-webapi
我正在使用官方文档中IOptions描述的模式.
当我从中读取值时appsetting.json,这可以正常工作,但是如何更新值并将更改保存回来appsetting.json?
在我的例子中,我有几个字段可以从用户界面编辑(由管理员用户在应用程序中).因此,我正在寻找通过选项访问器更新这些值的理想方法.
据我所知,这RoutePrefix不会自己添加到路由表的路由.在您的操作上,您需要Route声明一个属性.我很难找到一个权威的博客/ msdn页面/一些东西,说明为什么defalut RoutePrefix不会添加到路由表的路由.
有没有人有一个确实含有此权威的权威帖子,如果是这样,你会告诉我它是谁.非常感谢你.
编辑 以澄清我的问题
什么都不行
[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
public int get(){return 1000000;}
}
Run Code Online (Sandbox Code Playgroud)
作品
[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
[Route("")]
public int get(){return 1000000;}
}
Run Code Online (Sandbox Code Playgroud)
上面的场景是有效的,因为我们明确表示对该路径的get操作SteveController有一条空路线.一旦我们这样做,路线就会被添加到RouteTable
第一种情况不起作用,因为只是使用RoutePrefix不会向路由表添加任何内容.RoutePrefix本身不会产生路线.这似乎是常识,我想知道一个说明原因的来源.优先受尊敬的社区成员,即Jon Skeet或Microsoft团队成员.
c# asp.net-web-api attributerouting asp.net-web-api-routing asp.net-web-api2
c# ×8
asp.net-core ×4
unit-testing ×3
moq ×2
.net-core ×1
assertions ×1
azure ×1
iis-express ×1
servicebus ×1
urlhelper ×1
xunit ×1
xunit2 ×1