Проведение дарт-тестов на реальной базе в Акведуке - PullRequest
0 голосов
/ 03 февраля 2020

Я создаю базу данных только для чтения PostgreSQL. Поскольку он не будет изменен после его заполнения, я хотел бы запустить несколько тестов, чтобы убедиться, что данные правильные. TestHarness с миксином ORM создает пустую базу данных для каждого теста. Могу ли я получить доступ к реальной базе данных из тестов?

Я перемещаю вопросы и ответы из канала Aqueduct Slack для публикации c справки.

1 Ответ

0 голосов
/ 03 февраля 2020

Ответ от Сокращения :

Вы можете запустить сервер и получить его mangedContext.:

final app = Application<YourChannel>() 
  ..options.configurationFilePath = theConfigString 
  ..options.port = somePort;
await app.startOnCurrentIsolate();
final context = app.channel.context; 
// Now you can use the context to access the data base

И вот как я реализовал это в контексте:

import "package:test/test.dart";
import 'package:my_server/model/text_line.dart';
import '../harness/app.dart';

Future main() async {

  // setup
  final app = Application<MyServerChannel>()
    ..options.configurationFilePath = 'config.yaml';
  await app.startOnCurrentIsolate();
  final context = app.channel.context;

  test('Database has the right number of rows', () async {
    final query = Query<TextLine>(context);
    final numRows = await query.reduce.count();
    expect(numRows, 43845);
  });

}
...