2020
10-08
10-08
ASP.NET Core对Controller进行单元测试的完整步骤
前言单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Controller写过测试的。今天来演示下如果对Controller进行单元测试。以下内容默认您对单元测试有所了解,比如如何mock一个接口。在这里多叨叨一句,面向接口的好处,除了能够快速的替换实现类(其实大部分接口不会有多个实现),最大的好处就是可以进行mock,可以进行单元...
继续阅读 >
昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NETCoreMVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好解决方案。我当时在外边,回复不太方便,所以只给他说了两个接口/类型:IActionDescriptorProvider和ApplicationPartManager。这是一个挺有意思的问题,所以回家后通过两种方案实现了这个需求。源代码从这里下载。一、实现的效果我们先来看...
在StartupConfigureServices注册本地化所需要的服务AddLocalization和Configure<RequestLocalizationOptions>publicvoidConfigureServices(IServiceCollectionservices){services.AddLocalization();services.Configure<RequestLocalizationOptions>(options=>{varsupportedCultures=newList<CultureInfo>{newCultureInfo("en-us"),newCultureInfo("zh-cn")};options.DefaultR...
Asp.NetCore中虽然集成了许多常用的身份认证,但很多时候,我们还是需要实现自己的身份认证接口,本文这里就简单的介绍下如何实现自定义身份认证接口。首先写一个简单的接口。[Authorize][HttpGet]publicobjectFoo(){returnDateTime.Now.ToString();}由于有Authorize标记,访问函数体前会判断用户是否通过认证,由于这里没有通过认证,会的得到一个500错误。自定义认证处理类:实现一个IAuthenticationHandler接口即可:publ...
电脑不想装几十个G的VS2017,那就用VSCode吧目标:创建一个类库项目Skany.Core,并用Nuget引用第三方组件Hash实现加密算法创建一个单元测试项目Skany.Tests,引用类库Skany.Core,并测试其中的方法创建一个控制台应用程序项目Skany.Output,引用类库Skany.Core,并输出方法执行结果创建一个解决方案Skany.sln,包括以上三项目环境.NETCoreSDK2.2.202开始首先在VSCode安装几个扩展插件C#C#Exten...
当我们在使用VisualStudio2019非预览版本开发WindowsFormsApp(.NETCore)应用程序时是不能使用窗体设计器的。即使在窗体文件上右击选择“显示设计器”菜单,仍旧只能看到代码,无法打开窗体设计器。根据微软开发者博客的描述,我们可以使用VisualStudio2019预览通道,将VisualStudio2019更新至16.6来启用设计器(参见:Updateson.NETCoreWindowsFormsdesigner)。在不启用预览通道的情况下,我们仍然可以...
背景之前老黄写过一篇《ASP.NETCore结合Nacos来完成配置管理和服务发现》简单介绍了如何让.NETCore程序接入Nacos,之前的SDK里面更多的是对Nacos的OpenAPI进行了封装以及对服务注册和发现的封装。配置这一块当时并没有过多的处理,用起来有时感觉不会特别顺手,所以将它和.NETCore的配置结合起来了,让它用起来更简便。怎么个简便法呢?可以说,除了多添加一下provider,其他的操作都是和最原始的一模一样,你想用IConfigurati...
在Asp.netCore之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类。并且Core把MVC跟WebApi合并之后Action的返回值体系也有了很大的变化。ActionResult类ActionResult类是最常用的返回值类型。基本沿用了之前Asp.netMVC的那套东西,使用它大部分情况都没问题。比如用它来返回视图,返回json,返回文件等等。如果是异步则使用Task。publicclassTestController:Controller{publ...
默认情况下,ASP.NETCore应用会监听一下2个Url:http://localhost:5000https://localhost:5001在本篇博文中,我将展示如何使用五种不同的方式改变应用监听的URLs。在ASP.NETCore项目启动时,有多种配置监听Url的方式,在我之前的一篇博客中,已经展示了在ASP.NETCore1.0中如何应用不同的方式配置,在ASP.NETCore3.x中,大部分方式还是一样的。UseUrls()-在Program.cs配置程序监听的URLs环境变量-使用DOTNET_URLS...
在这篇文章中,我将向大家介绍,如何使用中间件组件来处理静态文件。这篇文章中,我们讨论下面几个问题:在ASP.NETCore中,我们需要把静态文件存放在哪里?在ASP.NETCore中wwwroot文件夹是啥?怎样在ASP.NETCore应用程序中,配置静态文件中间件?UseFileServer中间件的作用是什么?最重要的特性之一就是;几乎所有的web应用程序都应该具备直接从文件系统存取静态文件的能力。ASP.NETCore能够直接从客户端获取应用程序...
ASP.NETCORE出现之前我们实现的Controller,MVC都继承自Controller基类,WebApi的话继承自ApiController。现在ASP.NETCORE把MVC跟WebApi合并了,已经不再区分MVC或者WebApi。ASP.NETCORE的Controller继承结构也发生了变化。我们看其他示例的时候会发现有些继承自Controller有些继承自ControllerBase。事实上ControllerBase是Controller的基类。也就是说如果你继承自Controller,其实就是继承了ControllerBase。那什么时候该选择...