Модуль вспомогательных функций: тряска дерева и тестирование (издевательство, шпионаж и т. Д.) - PullRequest
1 голос
/ 07 ноября 2019

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

Тестируемый

// code.js

export const namespace = {
 a() {...},
 b() {this.a();},
 c()
};
// user.js

const {namespace} = require("./code.js");

export function userFn() {
 namespace.b();
}

// ===> Everything in code.js will be bundled. :(
// test.js

const {namespace} = require("./code.js");
const {userFn} = require("user.js");

spyOn(namespace.b)

userFn();

assert.equal(namespaced.b.called, 1);

Дрожание деревьев

// code.js

export function a() {...}

export function b() {a()}

export function c() {}
// user.js

import {b} from "./code.js";

function userFn() {b();}

//Function "c" from code.js will not be bundled.
// test.js

// ===> You only really need to know that "b" was called. How to test that? :(

Можем ли мы иметь модули вспомогательных функций, которые можно тестировать и для которых работает встряхивание дерева - желательно без необходимости иметь дополнительную библиотеку тестирования или около того?

Также, пожалуйста, кричите на меняесли есть ошибки в моих сценариях.

...