На странице es6-features.org/#ClassInheritanceFromExpressions можно написать функцию агрегации, чтобы разрешить множественное наследование:
class Rectangle расширяет агрегацию ( Shape, Colored, ZCoord) {}
blockquote>var aggregation = (baseClass, ...mixins) => { let base = class _Combined extends baseClass { constructor (...args) { super(...args) mixins.forEach((mixin) => { mixin.prototype.initializer.call(this) }) } } let copyProps = (target, source) => { Object.getOwnPropertyNames(source) .concat(Object.getOwnPropertySymbols(source)) .forEach((prop) => { if (prop.match(/^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)) return Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop)) }) } mixins.forEach((mixin) => { copyProps(base.prototype, mixin.prototype) copyProps(base, mixin) }) return base }
Но это уже предусмотрено в библиотеках, таких как aggregation .
Martin Fowler записал превосходная статья об этом предмете. От той статьи:
Meszaros использует термин Тест Дважды, поскольку общее обозначение для любого отчасти симулирует объект, используемый вместо реального объекта для тестирования. Название происходит от понятия Трюка Дважды в фильмах. (Одна из его целей состояла в том, чтобы избегать использования любого имени, которое уже широко использовалось.) Meszaros тогда определил четыре конкретных вида дважды:
- Фиктивные объекты раздаются, но никогда на самом деле используются. Обычно они просто используются для заполнения списков параметров.
- Поддельные объекты на самом деле имеют рабочие реализации, но обычно берут некоторый ярлык, который делает их не подходящими для производства (в базе данных памяти, хороший пример).
- Тупики предоставляют консервированные ответы на вызовы, выполненные во время теста, обычно не отвечающего вообще ни на что снаружи, что программируется в для теста. Тупики могут также записать информацию о вызовах, таких как почтовый тупик шлюза, который помнит сообщения, которые она 'отправила', или возможно только, сколько сообщений она 'отправила'.
- Насмешки - то, о чем мы говорим здесь: объекты, предварительно запрограммированные с ожиданиями, которые формируют спецификацию вызовов, которые они, как ожидают, получат.
Для помещения его в мои собственные слова: фиктивные объекты "ожидают", что определенные методы будут названы на них, и обычно заставят модульный тест перестать работать, если их надежды не будут оправданы. Тупиковые объекты обеспечивают консервированные ответы (и может быть автоматически сгенерирован библиотеками помощника), но обычно делайте не , непосредственно заставляют модульный тест перестать работать. Они обычно просто используются так, чтобы объект, который Вы тестируете, получил данные, это должно сделать свою работу.
"Тупик" является реализацией интерфейса, который существует для обеспечения data/a какого-то ответа. Например:
Xml Обычно это было бы обеспечено другим сервисом (быть им веб-сервис, другое приложение, база данных), но для улучшения тестируемость из кода, результаты "фальсифицируются".
А главное преимущество этого - то, что он позволяет утверждениям быть сделанными в модульных тестах на основе ожидаемых данных. Если ошибки возникают из-за ошибок данных, то тесты могут легко быть добавлены, новый созданный тупик (тиражирование ошибки данных) и код, произведенный для исправления ошибки.
Тупики отличаются к Насмешки , в котором они используются, чтобы представить и протестировать состояние из объекта, тогда как Насмешка тестирует взаимодействие .