【问题标题】:Negative assertions in SupertestSupertest 中的否定断言
【发布时间】:2014-01-28 19:12:04
【问题描述】:

开始使用 Javascript 进行测试。我正在使用 Mocha,但 Louis 明智地没有说这个问题是特定于 Mocha 的。我有一个 Node 应用程序,其中有一些页面对匿名用户可见,而有些页面如果你没有登录则不应该看到。所以,作为一个非常简单的开始,

describe('User Access', function(){
it('should allow anyone to access the help desk (about page)', function(done){
  request(host)
  .get('/')
  .expect(200, done);
}),
it('should allow anyone to access the contact page', function(done){
  request(host)
  .get('/contact')
  .expect(200, done);
}),
//initially we were expecting 404, we need anything BUT 200.
it('should NOT allow anonymous user to access the Training Material page', function(done){
  request(host)
  .get('/training')
  .expect(404, done);
}),

这最初是有效的。但是,开发人员已将不可用页​​面更改为 302 状态,并将这些页面重定向到 Web 应用程序的根目录。因此,为了让开发人员在如何实施此限制方面具有灵活性,我想将其更改为否定断言。那么,使用 Mocha 语法,我如何“期望”响应为 BUT 200?

【问题讨论】:

  • 你知道,request(...).get(...).expect(...); 不是摩卡固有的东西。看起来您正在使用 supertest 来提供此功能。如果我错了,请删除我添加的标签并编辑您的问题以告诉我们此功能的来源。
  • 谢谢,路易斯。你说的对。已编辑。

标签: javascript node.js supertest


【解决方案1】:

docs here 说您可以传入一个自定义断言函数,该函数给出响应对象,从该函数返回一个值将意味着断言失败,即;

.expect(function(res){
    if(res.status == 200){
        return "we dont like 200!";
    }
})

【讨论】:

  • 奇怪,这种方法不起作用。如果我测试任何特定的响应代码(例如现在的 302,或者 404 或 200),测试会在合理的时间内(不到 200 毫秒)返回。但是,完全按照编写的代码执行此代码会导致代码超时。
  • 好像没有响应返回值
  • 看来你需要throw,而不仅仅是返回一个字符串。
猜你喜欢
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 2017-01-21
相关资源
最近更新 更多