我的所有单元测试都有一些我可以运行的常用代码并将其抽象为函数。但是,我希望能够在每个测试中重复使用Core
值
function makeSuite(name, module, callback) {
suite(name, function () {
var Core = {};
setup(function () {
Core = Object.create(core).constructor();
Core.module("name", module);
});
teardown(function () {
Core.destroy();
});
callback(Core);
});
}
makeSuite("Server", server, function (Core) {
test("server creates a server", useTheCore);
test("server listens to a port", useTheCore);
test("server emits express app", useTheCore);
test("server destroys itself", useTheCore);
});
每次拨打useTheCore
时,我都希望核心有不同的价值。这是因为特定单元测试库在每个setup
之前调用test
方法。这显然不起作用,因为我通过值将{}
传递给回调。当我覆盖Core
时,它不会传播。
我可以使用的一个hack是__proto__
来模拟传递引用
function makeSuite(name, module, callback) {
suite(name, function () {
var ref = {};
setup(function () {
var Core = ref.__proto__ = Object.create(core).constructor();
Core.module("name", module);
});
teardown(function () {
ref.__proto__.destroy();
});
callback(ref);
});
}
__proto__