为什么solo_group不会调用它的setUp方法

时间:2014-07-31 12:34:45

标签: dart dart-unittest

我使用scheduled_test来测试我的Polymer Dart元素。这很好,直到我尝试使用solo_group()。我的测试依赖于被调用的setUp()方法,但是当使用solo_group()时,不会调用setUp()方法。我的测试,可以理解的失败,抛出有关空值的错误。是否有一个原因?我尝试使用solo_test()代替,并按照我的预期工作,调用setUp()方法,但不应该调用solo_group。

我感觉到另一个错误报告,但我想在此之前确认这不是预期的行为。

{更新}如上所述,这是一个例子,它不是所有测试代码,但它应该足够了。在这个例子中,我希望调用setUp()方法,但它不是。但是,如果我将solo_group转换为group,则确实如此。如果用solo_test()替换test(),并且用group()替换solo_group(),也会调用setUp()。

class CheckedFieldComponent extends PageComponent {
  CheckedFieldComponent(el) : super(el);

  bool get value => component.model.value;
  bool get checkIconShown => component.shadowRoot.querySelector('core-icon') != null;
}

void checked_field_test() {
  CheckedFieldComponent component;
  CheckedFieldComponent component2;

  solo_group('[checked-field]', () {
    setUp(() {
      schedule(() => Polymer.onReady);
      schedule(() {
        BoolModel model = new Model.create('bool', '1', 'checked', true, true);
        BoolModel model2 = new Model.create('bool', '2', 'checked', false, true);

        PolymerElement element = createElement('<checked-field></checked-field>');
        PolymerElement element2 = createElement('<checked-field></checked-field>');

        element.model = model;
        element2.model = model2;

        document.body.append(element);
        document.body.append(element2);

        component = new CheckedFieldComponent(element);
        component2 = new CheckedFieldComponent(element2);

        return Future.wait([component.flush(), component2.flush()]);
      });
      currentSchedule.onComplete.schedule(() {
        component.component.remove();
        component2.component.remove();
      });
    });


    test('model.value is true', () {
      schedule(() {
        expect(component.value, isTrue);
      });
    });
  });
}

0 个答案:

没有答案