我有一个状态机在JS(简化)有一个初始状态,只有在任何事情发生之前设置。什么是暴露私人javascript vars测试的最肮脏的方式?
define(function() {
var state = 'initial',
exports = {};
exports.getState = function() {
return state;
};
exports.doSomething = function() {
state = 'newState';
};
return exports;
});
因为国家是永久的,直到应用程序重新加载,第一次测试后的状态永远不会是“初始”又来了,所以我需要一种方法来重置。
这是最简单的方法吗?我应该...
a)只是使国家公开,但标记为私人与_?
define(function() {
var exports = {};
exports._state = 'initial'
exports.getState = function() {
return this.state;
};
exports.doSomething = function() {
this.state = 'newState';
};
return exports;
});
b)使状态可以通过函数写入?
define(function() {
var state = 'initial',
exports = {};
exports.getState = function() {
return state;
};
exports.doSomething = function() {
state = 'newState';
};
if(window.xxTests) {
window.xxTests.Module = {
setState: function(newState) {
state = newState;
}
};
}
return exports;
});
(XX是应用前缀和xxTests仅被定义为测试运行的一部分)
或
C)做别的事情完全是我没有想到的?
您的想法和建议表示赞赏。
为什么不添加'exports.reset = function(){state ='initial'; };'? – Goodwine 2013-05-08 16:39:18
这是一个选项,但与其他选项一样,它允许在生产环境中应该只读时访问私有变量。 – 2013-05-08 16:45:10