跳过Coffeescript测试取决于软件版本

时间:2018-11-28 10:04:12

标签: javascript coffeescript mocha

我有一个名为archive.spec.coffee的coffeescript文件。

它始于:

describe 'Archive', ->

并且所有测试都在描述中。

我想使用http调用检查软件版本,根据具体情况,我想执行或跳过测试。

我认为我需要做这样的事情,但到目前为止它不起作用:

req = https.get {host: "https://path/to/endpoint"}

if(req.version == 1.2.3)
  this.skip
else
  describe 'Archive', ->

有人可以告诉我如何正确执行此操作吗?

其他信息

我想出了这个:

beforeEach ->
  req = request.get {
    url: 'https://path/to/endpoint', 
    auth: {
      user: 'admin',
      pass: 'password'
    },
    json: true
  }, 
  (err, res, body) ->
    version = body.responseData.devices[0].versions[0].version
    if (version.indexOf('1.2.3') == -1)
      done()
    else
      this.skip()

describe 'Archive', ->

我现在的问题是,如果版本为1.2.3,则version.indexOf('1.2.3')返回0,则输入了else,但是没有跳过测试。

最新更新

现在我想出了:

before (done) ->
  req = request.get {
    url: 'https://path/to/endpoint', 
    auth: {
      user: 'admin',
      pass: 'password'
    },
    json: true
  }, 
  (err, res, body) ->
    version = body.responseData.devices[0].versions[0].version
    if (version.indexOf('1.2.3') != -1)
      skip = true
      done()
    else
      done()

describe 'Archive', ->

  it 'my_test', ->
    if (skip)
      this.skip()

如果我使用1.2.3版进行测试,则可以看到在before函数中将skip设置为true。 done()返回my_test,但是if (skip)false。显然这是因为skip在其他函数中设置为true。我如何获得它,以便before将skip的值返回到我的测试中?

1 个答案:

答案 0 :(得分:0)

我有一个json格式的配置文件,所以我添加了一个version密钥,该密钥需要一个包含版本的环境变量。进入配置后,我就可以随意使用它了。