我在 web_server.dart 文件中找到了一些代码,该代码位于 bin 文件夹中:
import 'dart:async';
import 'package:redstone/server.dart' as app;
import 'package:redstone_mapper/mapper.dart';
import 'package:redstone_mapper/plugin.dart';
import 'package:redstone_mapper_pg/manager.dart';
import 'package:shelf/shelf.dart' as shelf;
main() {
var uri = "postgres://rpss:@10.10.10.10:5432/rty";
var dbManager = new PostgreSqlManager(uri, min: 1, max: 3);
app.addPlugin(getMapperPlugin(dbManager));
app.setupConsoleLog();
app.start(address: '127.0.0.1', port: 8100);
}
PostgreSql get pgsql => app.request.attributes.dbConn;
Future getNextPlanId() {
return pgsql.query("select smth from table1", String);
}
测试文件夹中还有另一个名为 web_server_test.dart 的dart文件:
library web_server_test;
import 'package:unittest/unittest.dart';
import 'dart:async';
import '../bin/web_server.dart';
void main() {
group('test1', () {
test("Step 1: must be PASS", (){
return getNextPlanId().then((onValue){
expect(onValue, hasLength(4));
});
});
});
}
当我运行 web_server_test.dart 文件时,出现错误:
测试失败:捕获null对象没有getter'属性'。
NoSuchMethodError:找不到方法:'属性'
我尝试运行web_server.dart或停止一个。错误正在上升。
答案 0 :(得分:0)
在您的测试中,您似乎没有引导app
。必须为您的测试调用主要代码。您的测试中不会自动调用main()
函数。
您可以在函数中提取其逻辑并将其称为测试设置。
当您在PostgreSql get pgsql => app.request.attributes.dbConn;
上致电attributes
时, request
崩溃,可能没有像您希望的那样进行初始化。