Dart unittest pgsql查询错误

时间:2015-05-06 13:44:32

标签: dart

我在 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或停止一个。错误正在上升。

1 个答案:

答案 0 :(得分:0)

在您的测试中,您似乎没有引导app。必须为您的测试调用主要代码。您的测试中不会自动调用main()函数。

您可以在函数中提取其逻辑并将其称为测试设置。

当您在PostgreSql get pgsql => app.request.attributes.dbConn;上致电attributes时,

request崩溃,可能没有像您希望的那样进行初始化。