Javascript 当实际值和预期值都是相同的字符串值时,为什么sinon.assert.match(实际值,预期值)会抛出AssertError?

Javascript 当实际值和预期值都是相同的字符串值时,为什么sinon.assert.match(实际值,预期值)会抛出AssertError?,javascript,sinon,Javascript,Sinon,我有mocha、chai和sinonJavascript测试框架和库可以在我继承的应用程序上使用。我对他们都是新手,我一直在阅读他们的api,学习如何正确使用它们 下面是我要验证的Javascript对象。若预期的name属性丢失,验证程序将抛出UsageError:name属性丢失 // person object const person = { name: 'peter' } // validate method of exported validator JS component as

我有
mocha、chai和sinon
Javascript测试框架和库可以在我继承的应用程序上使用。我对他们都是新手,我一直在阅读他们的
api
,学习如何正确使用它们

下面是我要验证的Javascript对象。若预期的
name
属性丢失,验证程序将抛出
UsageError:name属性丢失

// person object
const person = { name: 'peter' }

// validate method of exported validator JS component
async validate(person) {
    const { name } = person;
    const promises = [];
    if (typeof name !== object) { throw new UsageError('name property is missing'); }
    ...
    else { promises.push(fooService(name)); }
    try {
        await Promise.all(promises);
    } catch (error) { throw (error); }
}

// unit test in sinon
describe('Validate person', async function() {    
it('should throw error not find name property', async function() {
  const person = { 'foo': '1234 somewhere' };
 try {
  await validator.validate(person);
 } catch(error) {      
  sinon.assert.match(error, 'name property is missing');
 }              
});
这是
async+await
代码,我知道的太少了
sinon
将是一个合适的选择,当我执行单元测试时,我甚至对以下错误消息感到困惑:

AssertError: expected value to match
expected = UsageError: name property is missing
actual = UsageError: name property is missing
我想,
actual
expected
在字符串中是一样的,但我不明白为什么我得到了
AssertError
。如果有人能向我解释我做错了什么,并指导我如何正确实施这个单元测试,我将不胜感激。泰

[更新]


抱歉,我意识到我在发布的示例测试中给出了一个错误的示例。我通过让
person对象不包含name属性来更正它,它失败了,因为测试比较了引用。代码使用
new
语句创建新引用,例如
newusageerror

例如:

let expect=require('chai')。expect;
它('检查相等',函数(){
const actual=新错误('name属性缺失');
const expected=新错误('name属性缺失');
预期(实际)到相等(预期);
})
上面的代码将给出输出

// output
AssertionError: expected [Error: name property is missing] to equal [Error: name property is missing]
      + expected - actual
解决方案可能是您可以通过访问
message
属性来比较消息

it('checks equality' ,function() {
  ...

  expect(actual.message).to.equal(expected.message);
})


希望对你有所帮助

谢谢你的时间和解释。我今天学到了一些好东西。