在两个堆叠错误之间扩展字符串

时间:2016-08-17 14:01:37

标签: javascript unit-testing ecmascript-6 babel jestjs

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;
    }

}

1 个答案:

答案 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是很奇怪的。