Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:Stub通过testdouble进行单元测试的方法_Javascript_Node.js_Unit Testing_Stub_Testdoublejs - Fatal编程技术网

Javascript JS:Stub通过testdouble进行单元测试的方法

Javascript JS:Stub通过testdouble进行单元测试的方法,javascript,node.js,unit-testing,stub,testdoublejs,Javascript,Node.js,Unit Testing,Stub,Testdoublejs,我正试图通过testdoubleJS“存根”一个方法,以对该方法进行单元测试(执行npm测试)。这是我第一次这么做,所以我还是很难理解。 对于我的尝试-如下所示-我确实得到了错误TypeError:mediaAddImagePoint.run不是一个函数 这就是我要测试的方法的样子: import { ValidatedMethod } from 'meteor/mdg:validated-method' import { LoggedInMixin } from 'meteor/tunifig

我正试图通过testdoubleJS“存根”一个方法,以对该方法进行单元测试(执行
npm测试
)。这是我第一次这么做,所以我还是很难理解。 对于我的尝试-如下所示-我确实得到了错误
TypeError:mediaAddImagePoint.run不是一个函数

这就是我要测试的方法的样子:

import { ValidatedMethod } from 'meteor/mdg:validated-method'
import { LoggedInMixin } from 'meteor/tunifight:loggedin-mixin'
import { Media } from '/imports/api/media/collection.js'

const mediaAddImagePoint = new ValidatedMethod({
  name: 'media.point.add',
  mixins: [LoggedInMixin],
  checkLoggedInError: { error: 'notLogged' },
  validate: null,

  run ({ id, x, y }) {
    Media.update(
      { _id: id },
      {
        $push: {
          'meta.points': {
            id: Random.id(),
            x,
            y
          }
        }
      }
    )
  }
})
这就是我试图通过testdouble测试此方法的方式:

import { expect } from 'chai'
import td from 'testdouble'

describe('media.point.add', function () {
  describe('mediaAddImagePoint', function () {
    let Media = td.object(['update'])
    let ValidatedMethod = td.function()
    let LoggedInMixin = td.function()
    let mediaAddImagePoint

    beforeEach(function () {
      td.replace('meteor/mdg:validated-method', { ValidatedMethod })
      td.replace('meteor/tunifight:loggedin-mixin', { LoggedInMixin })
      td.replace('/imports/api/media/collection.js', { Media })
      mediaAddImagePoint = require('../../imports/api/media/methods/imagePoints.js').mediaAddImagePoint
    })

    afterEach(function () {
      td.reset()
    })

    it('should add image point', function () {
      const query = { id: 'sampleID', x: 12, y: 34 }
      mediaAddImagePoint.run(query)
      td.verify(Media.update(query))
    })
  })
})

你找到解决问题的办法了吗?没有,我没有。。。