Javascript Mixins

1

Я весь день занимался поиском в Интернете, но мне придется обратиться к сообществу. У меня этот код в отдельном файле с несколькими другими классами в нем.

const withExponents = function (obj) {
  return Object.assign({}, obj, {
    pow(num1, num2) {
      return Math.pow(num1, num2);
    },
    multiplyExp(array1, array2) {
      return Math.pow(...array1) * Math.pow(...array2);
    },
    divideExp(array1, array2) {
      return Math.pow(...array1) / Math.pow(...array2);
    }
  });
}

И вот спецификация, которую я должен обслуживать:

describe("withExponents", function() {
    var calculator;

    beforeEach(function() {
        calculator = new Calculator();
        withExponents.call(calculator);
    });

    it("returns 2^3", function() {
        expect(calculator.pow(2, 3)).to.equal(8);
    });

    it("multiplies 2^3 and 2^4", function() {
        expect(calculator.multiplyExp([2, 3], [2, 4])).to.equal(128);
    });

    it("divides 2^3 by 2^5", function() {
        expect(calculator.divideExp([2, 3], [2, 5])).to.equal(0.25);
    });
});

Думаю, мне нужно будет сделать какой-то module.exports = withExponents? Я использую parens? (module.exports = withExponents()) А как насчет импорта в тестовый файл, чтобы он знал, что с Exponents даже есть? Я возился с некоторыми из этих вещей, но все прошло неплохо. Исправления будут высоко оценены.

Теги:
jasmine
mixins

1 ответ

1

Как я вижу, вы должны сделать следующее:

В файле withExponents:

module.exports = function (obj) {
 ...
}

В тестовом файле

const withExponents = require(/* path to your withExponents file -> */ './withExponents.js');
...
calculator = withExponents(calculator);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню