C#-AspNetCore v2.0-在另一个项目中渲染剃刀视图以进行集成测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-AspNetCore v2.0-在另一个项目中渲染剃刀视图以进行集成测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2385字,纯文字阅读大概需要4分钟。
内容图文
我想为我的Web应用程序编写集成测试.我使用Microsoft.AspNetCore.TestHost.TestServer通过url与控制器进行通信.但是视图无法呈现.作为回应,我收到错误消息:
One or more compilation references are missing. Ensure that your
project is referencing ‘Microsoft.NET.Sdk.Web’ and the
‘PreserveCompilationContext’ property is not set to false.
在我的.csproj中,我尝试更改Microsoft.NET.Sdk.Web上的project-sdk,并尝试添加< PreserveCompilationContext> true< / PreserveCompilationContext> ;.我也尝试按照Microsoft-docs(here中的here)中所述重写代码.
但是我仍然有同样的错误信息.
重现步骤:
>创建测试项目“ WebApplication1.IntegrationTests”.
>在WebApplication-project上添加参考.
>添加nuget程序包“ Microsoft.AspNetCore.TestHost”
>通过TestServer将get-request发送到“ / Home / Index”.
>读取带有错误消息的响应.
using WebApplication1;
using Microsoft.AspNetCore.TestHost;
using System.Net.Http;
using System.Threading.Tasks;
namespace WebApplication1.IntegrationTests
{
public class Program
{
public static void Main(string[] args)
{
// Path to contentRoot folder.
var contentRootPath = @"..\..\..\..\WebApplication1";
var builder = new WebHostBuilder()
.UseStartup<Startup>()
.UseEnvironment(EnvironmentName.Development)
.UseContentRoot(contentRootPath);
var server = new TestServer(builder);
var client = server.CreateClient();
var response = client.GetAsync("/Home/Index").Result;
var responseString = response.Content.ReadAsStringAsync().Result;
}
}
}
在浏览器中呈现的responseString:
解决方法:
为了最近测试ASP.NET Core 2.0应用程序,我不得不使用< PreserveCompilationContext> true< / PreserveCompilationContext>更新集成测试项目的csproj文件.属性,并带有一个用于复制.deps.json文件的附加目标.
<!--
Work around https://github.com/NuGet/Home/issues/4412. MVC uses DependencyContext.Load() which looks next to a .dll
for a .deps.json. Information isn't available elsewhere. Need the .deps.json file for all web site applications.
-->
<Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''">
<ItemGroup>
<DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)', '.deps.json'))" />
</ItemGroup>
<Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" />
</Target>
您可以检查完整集成测试项目in github的源代码.可能会有其他差异,例如我将完整路径与.UseContentRoot(path)方法一起使用.
内容总结
以上是互联网集市为您收集整理的C#-AspNetCore v2.0-在另一个项目中渲染剃刀视图以进行集成测试全部内容,希望文章能够帮你解决C#-AspNetCore v2.0-在另一个项目中渲染剃刀视图以进行集成测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。