缺少测试配置文件 - Aqueduct
Missing Configuration File For Tests - Aqueduct
在使用 aqueduct 实现 OAuth 时,我错误地没有遵循测试驱动开发思想,现在我正在为此付出代价...
当我 运行 测试时,出现错误:
"No configuration file found. See README.md."
这是从我的 AppSink class 中的 initializeApplication 方法抛出的。
据我了解,测试使用 config.src.yaml 文件,因此我相应地配置了我的测试工具:
application = new Application<OdexSink>();
application.configuration.port = 0;
application.configuration.configurationFilePath = "config.src.yaml";
因为我能够在实施 AuthServer 等之前 运行 进行测试,所以我怀疑它是在整个过程中发生的。
我的测试设置如下:
var app = new Application<OdexSink>();
TestClient client;
setUp(() async {
await app.start(runOnMainIsolate: true);
client = new TestClient(app);
var ctx = ManagedContext.defaultContext;
var builder = new SchemaBuilder.toSchema(ctx.persistentStore, new Schema.fromDataModel(ctx.dataModel), isTemporary: true);
for (var cmd in builder.commands) {
await ctx.persistentStore.execute(cmd);
}
});
我的测试工具 start() 方法是:
Future start() async {
RequestController.letUncaughtExceptionsEscape = true;
application = new Application<OdexSink>();
application.configuration.port = 0;
application.configuration.configurationFilePath = "config.src.yaml";
await application.start(runOnMainIsolate: true);
await createDatabaseSchema(ManagedContext.defaultContext, sink.logger);
await addClientRecord();
await addClientRecord(clientID: DefaultClientID, clientSecret: DefaultClientSecret);
client = new TestClient(application)
..clientID = DefaultClientID
..clientSecret = DefaultClientSecret;
}
我的 config.src.yaml 文件退出,并包含数据库信息。
啊,只是一件小事 - 在您的 setUp 方法中,您正在创建并启动一个 Application
而不是那个 TestApplication
线束。它应该是这样的
var app = new TestApplication();
setUp(() async {
await app.start();
});
setUp 中的所有其他内容都已在您的测试工具中完成,您可以将 TestClient 用作 app.client
:
expect(await app.client.request("/endpoint"), hasStatus(200));
在使用 aqueduct 实现 OAuth 时,我错误地没有遵循测试驱动开发思想,现在我正在为此付出代价...
当我 运行 测试时,出现错误:
"No configuration file found. See README.md."
这是从我的 AppSink class 中的 initializeApplication 方法抛出的。 据我了解,测试使用 config.src.yaml 文件,因此我相应地配置了我的测试工具:
application = new Application<OdexSink>();
application.configuration.port = 0;
application.configuration.configurationFilePath = "config.src.yaml";
因为我能够在实施 AuthServer 等之前 运行 进行测试,所以我怀疑它是在整个过程中发生的。
我的测试设置如下:
var app = new Application<OdexSink>();
TestClient client;
setUp(() async {
await app.start(runOnMainIsolate: true);
client = new TestClient(app);
var ctx = ManagedContext.defaultContext;
var builder = new SchemaBuilder.toSchema(ctx.persistentStore, new Schema.fromDataModel(ctx.dataModel), isTemporary: true);
for (var cmd in builder.commands) {
await ctx.persistentStore.execute(cmd);
}
});
我的测试工具 start() 方法是:
Future start() async {
RequestController.letUncaughtExceptionsEscape = true;
application = new Application<OdexSink>();
application.configuration.port = 0;
application.configuration.configurationFilePath = "config.src.yaml";
await application.start(runOnMainIsolate: true);
await createDatabaseSchema(ManagedContext.defaultContext, sink.logger);
await addClientRecord();
await addClientRecord(clientID: DefaultClientID, clientSecret: DefaultClientSecret);
client = new TestClient(application)
..clientID = DefaultClientID
..clientSecret = DefaultClientSecret;
}
我的 config.src.yaml 文件退出,并包含数据库信息。
啊,只是一件小事 - 在您的 setUp 方法中,您正在创建并启动一个 Application
而不是那个 TestApplication
线束。它应该是这样的
var app = new TestApplication();
setUp(() async {
await app.start();
});
setUp 中的所有其他内容都已在您的测试工具中完成,您可以将 TestClient 用作 app.client
:
expect(await app.client.request("/endpoint"), hasStatus(200));