Отсутствует файл конфигурации для испытаний - Акведук

При реализации 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));
Другие вопросы по тегам