Отсутствует файл конфигурации для испытаний - Акведук
При реализации OAuth с акведуком я по ошибке не следовал идеологии разработки, управляемой тестами, и сейчас плачу за нее...
Когда я запускаю свои тесты, я получаю ошибку:
"No configuration file found. See README.md."
Который выбрасывается из метода initializeApplication в моем классе AppSink. Насколько я понимаю, в тестах используется файл 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);
}
});
И мой метод Test Harness 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 выходит и содержит информацию о БД.
1 ответ
Ах, только одна маленькая вещь - в вашем методе setUp вы создаете и запускаете Application
вместо этого TestApplication
упряжь. Это должно выглядеть так
var app = new TestApplication();
setUp(() async {
await app.start();
});
Все остальное в setUp уже сделано в вашей тестовой системе, и вы можете использовать TestClient как app.client
:
expect(await app.client.request("/endpoint"), hasStatus(200));