带Cumber steps和typescript的开关盒

带Cumber steps和typescript的开关盒,typescript,cucumber,webdriver-io,Typescript,Cucumber,Webdriver Io,我使用WebdriverIO6、Typescript 4和cucumber。 我有这样一个场景: Scenario: Login without password And I enter valid email But I do not enter password Then I can see "Password is required" error message 我有这一步: Then(/^I can see (.*) error message$/, (type

我使用WebdriverIO6、Typescript 4和cucumber。
我有这样一个场景:

Scenario: Login without password
And I enter valid email
But I do not enter password
Then I can see "Password is required" error message  
我有这一步:

Then(/^I can see (.*) error message$/, (type: string) => {
 const headerErrorMessage = loginPage.headerErrorMessage;
 const itemErrorMessage = loginPage.itemErrorMessage;

 switch (type) {
  case 'Authentication': {
   expect(headerErrorMessage.getText()).to.be.equal(errorMessages.headerErrorMessage);
   expect(itemErrorMessage.getText()).to.be.equal(errorMessages.authenticationFailedErrorMessage);
   break;
  }
  case 'Invalid email address': {
   expect(headerErrorMessage.getText()).to.be.equal(errorMessages.headerErrorMessage);
   expect(itemErrorMessage.getText()).to.be.equal(errorMessages.invalidEmailErrorMessage);
   break;
  }
  case 'Password is required': {
   expect(headerErrorMessage.getText()).to.be.equal(errorMessages.headerErrorMessage);
   expect(itemErrorMessage.getText()).to.be.equal(errorMessages.passwordRequiredErrorMessage);
   break;
  }
  default: {
  throw new TypeError('Unsupported type of error message');
  }
}
});  
开关不工作。对于该场景,它不匹配
case“需要密码”
。它只是在默认情况下表示它是
不受支持的错误消息类型

有人知道为什么吗?
谢谢
编辑
当我放置此
时(/^我可以看到“([^”]*)”错误消息$/,(类型:string)=>{
(注意我使用了
”([^”]*)“
而不是
(.*)
),然后它就工作了。
一些善良的灵魂能对此做出解释吗?
什么是不同的解释?

谢谢!

括号表示黄瓜捕获模式:(模式)。
.*的正则表达式与0或更多字符(换行除外)匹配 时代


您能否在运行时检查“type”参数的值?您可能正在捕获“Password is required”,其中有来自小黄瓜行的引号,该引号与您的开关大小写不匹配。

“([^”]*)“这意味着您正在获取双引号之间的文本,在本例中。功能文件中的文本正在匹配。是的,我理解正则表达式的作用。但我不明白为什么在case(.*)中switch不起作用,因为它还获取引号之间的文本。。。