使用 rewire 模拟 XML 响应

问题描述

使用 rewire 为以下代码编写单元测试用例的意图。但是,我对“模拟”项目功能一无所知。非常感谢这方面的任何帮助。代码、测试用例和错误详细信息等详细信息如下。如果您需要更多详细信息,请告诉我

如何在 body.item(0) 函数中模拟项目?

错误

    #account-details-helper
           #genApiResponse
             Test genApiResponse() success:
         **TypeError: body.item is not a function**
          at Object.genApiResponse (lib\handlers\utils\account-details-helper.js:37:106)
          at Context.<anonymous> (test\pccaccountdetailshelper.test.js:165:13)

// account-details-helper Code:

const genApiResponse = function (pccRes) {

  console.error(`PCC Account Search Response in genApiResponse is : ${JSON.stringify(pccRes)}`)
  let outres = {}
  outres.accountExists = 'No'
  let { status,body } = pccRes.data
  const pccResponseCode = status
  let resXMLRoot = {}

  if (Object.keys(pccRes).length !== 0 || pccRes.constructor !== Object ) {

    resXMLRoot = body.item(0)
    
    let resXMLErrorBody = (resXMLRoot.getElementsByTagNameNS('*','errorMessageDetail')).item(0)
    if (resXMLErrorBody !== null) {
      let errorString = (resXMLErrorBody.getElementsByTagNameNS('*','message')).item(0).textContent
      const errObj = {
        type: 'Provider Error',location: 'My Location',moreinformation: errorString,}
      errorrule(errObj,pccResponseCode,'Error')
    }
  }


  let resXMLAccountSearchResultBody = resXMLRoot.getElementsByTagNameNS('*','accountSearchResult')
  let resIntegrationKeyComponentBody
  if (resXMLAccountSearchResultBody.item(0) !== null) {
    resIntegrationKeyComponentBody = resXMLRoot.getElementsByTagNameNS('*','integrationKeyComponent').item(0)
    outres.accountNumber = resIntegrationKeyComponentBody.getElementsByTagNameNS('*','value').item(0).textContent
    outres.accountExists = 'Yes'
  }

  return outres
}
module.exports.genApiResponse = genApiResponse

// Test Case
 describe('#genApiResponse',function () {
    it('Test genApiResponse() success',async function () {
      const mymod = rewire('../lib/handlers/utils/account-details-helper')


      mymod.__set__({

          item() {
            return '<?xml version=\"1.0"\ encoding=\"UTF-8"\?> <ns1:accountSearchResultHolder xmlns:ns1=\"http://a/b/ws/v1\"><ns1:searchResultInfo><ns1:message xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/><ns1:searchSuccessIndicator>SUCCESS</ns1:searchSuccessIndicator></ns1:searchResultInfo><ns1:searchResults><ns1:accountSearchResult><ns1:accountKey><ns1:components><ns1:integrationKeyComponent><ns1:name>AccountReference</ns1:name><ns1:value>123456789</ns1:value></ns1:integrationKeyComponent></ns1:components><ns1:name>Sample</ns1:name></ns1:accountKey><ns1:attributes><ns1:dataValue><ns1:stringData><ns1:name>AccReference</ns1:name><ns1:value>987654321</ns1:value></ns1:stringData></ns1:dataValue></ns1:attributes></ns1:accountSearchResult></ns1:searchResults></ns1:accountSearchResultHolder>'
          },})


      let ctx = {
        data: {

          headers: { 'tid': 2131323,'sid': 123123213,authorization: 'weqewqe32424' },body: '<?xml version=\"1.0" encoding=\"UTF-8"\?> <ns1:accountSearchResultHolder xmlns:ns1=\"http://a/b/ws/v1\"><ns1:searchResultInfo><ns1:message xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/><ns1:searchSuccessIndicator>SUCCESS</ns1:searchSuccessIndicator></ns1:searchResultInfo><ns1:searchResults><ns1:accountSearchResult><ns1:accountKey><ns1:components><ns1:integrationKeyComponent><ns1:name>AccountReference</ns1:name><ns1:value>123456789</ns1:value></ns1:integrationKeyComponent></ns1:components><ns1:name>Sample</ns1:name></ns1:accountKey><ns1:attributes><ns1:dataValue><ns1:stringData><ns1:name>AccReference</ns1:name><ns1:value>987654321</ns1:value></ns1:stringData></ns1:dataValue></ns1:attributes></ns1:accountSearchResult></ns1:searchResults></ns1:accountSearchResultHolder>',},status: 200,} 
 
      mymod.genApiResponse(ctx)
      
    })
  })
        

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...