Node.js / JavaScript内置类型的存根?

时间:2011-10-25 15:07:55

标签: javascript node.js mocking monkeypatching stubbing

这项练习相当学术化,但它对理解JavaScript的行为非常有用。

为什么这样做:

var fs = require('fs');
console.log(fs.readdirSync('/').length); //approximately '28' on my Macbook
fs['readdirSync'] = function(){ return ['/tmp', '/bin']; };
console.log(fs.readdirSync('/').length); //'2' as expected

而这不是:

var a = "hello world";
console.log(a.length); //'11'
a['length'] = 1000;
console.log(a.length); //still '11'... why??

我知道可以对诸如String之类的JavaScript内置类型进行monkeypatch,但是可以将它们存根吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

TJ Holowaychuk提供:字符串是不可变的。因此,似乎不可能以这种方式。