我正在使用 schedule_test 来测试我的 Polymer Dart 元素。这很好用,直到我尝试使用solo_group()。我的测试依赖于被调用的 setUp() 方法,但是当使用 solo_group() 时,不会调用 setUp() 方法。我的测试,可以理解的失败,抛出关于空值的错误。是否有一个原因?我尝试使用solo_test() 代替,这正如我预期的那样工作,调用setUp() 方法,它应该调用,但不是solo_group。
我感觉到另一个错误报告,但我想在此之前确认这不是预期的行为。
{UPDATE} 如所要求的,这是一个示例,它不是所有的测试代码,但应该足够了。在此示例中,我希望调用 setUp() 方法,但事实并非如此。但是,如果我将 solo_group 转为仅组,则可以。如果将 test() 替换为 solo_test(),并且将 solo_group() 替换为 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);
});
});
});
}