如何在 Javascript 和 qUnit 中模拟字符串函数



模拟对象的正常函数通常工作如下:

objToMock.funcToMock = function (param1, ...) {
    equal(param1, 'expectedValue', 'param1 passed correctly');
}

如果我使用本机字符串函数尝试此操作,则会抛出错误 wis:

var name = 'test_string';
name.split = function (limiter) {
    ok(true, 'split called');
}

错误:

Source: TypeError: Cannot create property 'split' on string 'test_string'

内置字符串函数是否有阻止机制?我认为字符串也是具有函数的对象。访问"test_string"的原型不起作用,因为"原型"未定义。

搜索

web/stackoverflow非常困难,因为"javascript","string","split"和"mock"是太通用的搜索值。

感谢您的帮助!

实际上,字符串文字是一种独立的类型,它与 Object 不同。在 javascript 中,您只能为 key 分配一个值给对象。

当您调用"string".split时,字符串将在后面转换为字符串对象。所以,你的分配是没有用的。

如果已在严格模式下声明代码,则赋值将导致错误。

您可以像这样更改代码:

var name = new String('test_string');
name.split = function (limiter) {
    ok(true, 'split called');
}

最新更新