我有一個狀態機在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