在asp.net核心F#中未发现控制器>> [

问题描述 投票:0回答:1
我正在尝试使用asp.net核心在F#中设置单元测试。与下面的代码。但发送到服务器的代码失败,并显示404未找到。框架发现控制器的原因吗?

module Tests open System open Xunit open Microsoft.AspNetCore.Builder open Microsoft.AspNetCore.Hosting open Microsoft.AspNetCore.Mvc open Microsoft.Extensions.DependencyInjection type Startup () = member __.ConfigureServices(services: IServiceCollection) = services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2) |> ignore member __.Configure(app: IApplicationBuilder, env: IHostingEnvironment) = app.UseMvc() |> ignore [<Route("api")>] [<ApiController>] type TestController() = inherit ControllerBase() [<HttpGet("testGet")>] member __.TestGet() = 121221 [<HttpPost("testPost")>] member __.TestPost() = String.Empty let buildHost(baseAdress:string) = Microsoft.AspNetCore.WebHost .CreateDefaultBuilder() .UseStartup<Startup>() .UseUrls(baseAdress) .Build() [<Fact>] let ``My test`` () = let baseAdress = "https://localhost:9000" use host = buildHost(baseAdress) host.RunAsync() |> ignore let client = new System.Net.Http.HttpClient(BaseAddress = new System.Uri(baseAdress)) let result = client.GetAsync("api/testGet").Result Assert.Equal(System.Net.HttpStatusCode.OK, result.StatusCode) Assert.True(result.IsSuccessStatusCode, result.Content.ReadAsStringAsync().Result )

这里是fsproj文件的内容

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <IsPackable>false</IsPackable> <GenerateProgramFile>false</GenerateProgramFile> </PropertyGroup> <ItemGroup> <Compile Include="Tests.fs" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.2" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" /> <PackageReference Include="Microsoft.NETCore.App" Version="2.2.2" /> <PackageReference Include="xunit" Version="2.4.0" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> <PackageReference Include="coverlet.collector" Version="1.0.1" /> </ItemGroup> </Project>

我正在尝试使用asp.net核心在F#中设置单元测试。与下面的代码。但发送到服务器的代码失败,并显示404未找到。是否有原因导致......>
asp.net-core f#
1个回答
0
投票
  1. 除了@Kirk Larkin上面提到的原因,您需要将控制器放入namespace而不是直接放入module

    namespace App //<------------- put your controller into a namespace // ... open type Startup () = ... [<Route("api")>] [<ApiController>] type TestController() = ... module Tests= // ... open let buildHost(baseAdress:string) = Microsoft.AspNetCore.WebHost .CreateDefaultBuilder() .UseStartup<Startup>() .UseUrls(baseAdress) .Build() [<Fact>] let ``My test`` () = ...

© www.soinside.com 2019 - 2024. All rights reserved.