Tôi đang theo dõi guide này. Tôi có một Startup
trong dự án API sử dụng tệp cấu hình appsettings.json
.AppSettings.json để kiểm tra tích hợp trong ASP.NET Core
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
}
Phần cụ thể mà tôi đang xem là env.ContentRootPath
. Tôi đã làm một số đào xung quanh và có vẻ như của tôi appsettings.json
không thực sự được sao chép vào thư mục bin
nhưng điều đó là tốt như ContentRootPath
đang trở về MySolution\src\MyProject.Api\
, là nơi tệp appsettings.json
được đặt.
Vì vậy, trong dự án thử nghiệm tích hợp của tôi, tôi có thử nghiệm này:
public class TestShould
{
private readonly TestServer _server;
private readonly HttpClient _client;
public TestShould()
{
_server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
_client = _server.CreateClient();
}
[Fact]
public async Task ReturnSuccessful()
{
var response = await _client.GetAsync("/monitoring/test");
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
Assert.Equal("Successful", responseString);
}
này về cơ bản là sao chép và dán từ hướng dẫn. Khi tôi gỡ lỗi thử nghiệm này, ContentRootPath
thực sự là MySolution\src\MyProject.IntegrationTests\bin\Debug\net461\
, rõ ràng là thư mục đầu ra xây dựng cho dự án thử nghiệm và một lần nữa tệp appsettings.json
không có (có tôi có một tệp appsettings.json
khác trong dự án thử nghiệm) để thử nghiệm không thành công số TestServer
.
Tôi đã cố gắng giải quyết vấn đề này bằng cách sửa đổi tệp thử nghiệm project.json
.
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": {
"includeFiles": [
"appsettings.json"
]
}
}
Tôi hy vọng điều này sẽ sao chép các tập tin vào thư mục appsettings.json
xây dựng đầu ra nhưng nó than phiền về các dự án thiếu một phương pháp Main
cho một điểm nhập cảnh, xử lý các dự án thử nghiệm giống như một dự án console.
Tôi có thể làm gì để giải quyết vấn đề này? Tôi có làm điều gì sai?
Từ hiểu biết của tôi: trong khi kiểm tra, khi bạn sử dụng root ứng dụng đích làm đường dẫn gốc và/hoặc đường dẫn cơ sở (thay vì thư mục kết quả thử nghiệm), ứng dụng của bạn 'Startup' sẽ sử dụng' appsettings.json' của riêng nó, như khi chạy ngoài kiểm tra. Trong trường hợp như vậy, việc sao chép dự án thử nghiệm 'appsettings.json' vào thư mục đầu ra của nó sẽ không có hiệu lực. Tập tin json đó sẽ không được đọc chút nào. Đó có phải là trải nghiệm của bạn không? – superjos