Не умеет издеваться над синглтоном - PullRequest
0 голосов
/ 08 марта 2019

Я создал класс как синглтон, создавая статический метод для получения экземпляра этого класса, но во время модульного тестирования я не могу издеваться над этим классом.Есть ли другой способ в dart создать только один экземпляр, который можно легко протестировать на модуле.

1 Ответ

0 голосов
/ 08 марта 2019

Существуют различные способы в зависимости от ваших точных требований.
Вы можете использовать дополнительный класс для доступа к синглтону, где вы можете создать несколько экземпляров, при этом гарантируя, что значение, к которому он предоставляет доступ, будет синглтоном:

class MySingleton {
  static final MySingleton value = MySingleton.();

  MySingleton._();
}

class MySingletonHelper {
  MySingleton get value => MySingleton.value;
}

или альтернативный способ использования @visibleForTesting с ограничением, что одноэлементное значение не может быть final, а доступ на запись ограничен только DartAnalyzer, но не компилятором (я не считаю это серьезным ограничением) :

import 'package:meta/meta.dart';

class MySingleton {
  static MySingleton _value = MySingleton.();

  static MySingleton value => get _value;

  @visibleForTesting
  static set value(MySingleton val) => _value = val; 

  MySingleton._();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...