loopback: 127.0.0.1
googleDNS: 8.8.8.8
使用expect of jest,我运行我的测试
class Name extends String {
constructor(){
super(...arguments);
}
valid(){
return /[a-zA-Z]/.test(this);
}
}
我收到以下错误:
const name=new Name('Ahmed'); // instruction does not throw exception
it('something',()=>{
expect(name.valid()).toEqual(true); //---calling valid make the ERROR
})
所以,我手动实现String.prototype.toString is not generic
以及toString
方法。
valueOf
我又跑了,我得到了:
class Name extends String {
valid(){
return /[a-zA-Z]/.test(this);
}
toString(){
return this;
}
valueOf(){
return this;
}
}
答案 0 :(得分:0)
通过实施toString
& valueOf
as:
toString(){
return Object.keys(this).map((k)=>this[k]).join('');
}
valueOf(){
return Object.keys(this).map((k)=>this[k]).join('');
}
因为,当我在控制台中检查new String('abc')
时,我注意到结果为{0:'a',1:'b',2:'c'}
而且:
Object.keys({0:'a',1:'b',2:'c'}`).map((k)=>str[k]).join('') === 'abc'
toString
是很奇怪的。