当前位置: 首页 > 知识库问答 >
问题:

用摩卡测试promise时出错

梁宪
2023-03-14

我正在使用mocha和chai对AngularJS服务执行一些单元测试。该服务具有不同的功能,每个功能都返回一个promise。

我面临的问题是,测试不是在断言之前等待promise值得到解决。我知道做()回调可以用摩卡。所以,我试着用它。但这也给了我一个错误。这是代码:

describe('Service Test', function() {

    var factory;
    beforeEach(module('Test'));
    beforeEach(inject(function(_QueryService_){
            factory = _QueryService_;
        })
    );
    it('should check simpleQuery method',function(done){

        var promise = factory.query("args");
        var value;
        promise.then(function(data){
            value = data;
            assert.equal(1,2);
            done();
        }, function(error){
            assert.equal(3,4);
            done();
        });
    });
});

因此,现在的问题是测试没有失败(它应该失败)。相反,它只是超时并给我一个错误:“超时超过2000ms。请确保在此测试中调用了done()回调”

如果我没有包含done回调,那么测试就通过了,因为它甚至没有计算条件。

有人能提出解决办法吗?谢谢

共有1个答案

丁阳炎
2023-03-14

我在Node.js用柴火和摩卡做测试。我测试的大部分都是promise。下面是一些示例代码,可以帮助您入门。

var chai = require('chai'),
    expect = chai.expect;

chai.use(require('chai-things'))
    .use(require('chai-as-promised'));
chai.should();

describe(' Testing:', function() {
    describe('#getBlah', function() {
        describe('If blah', function() {
            it('Should should blah', function() {
                return service.getBlahAsync(foo, bar).should.eventually.have.length(0);
            });
        });

describe('If blahblah', function() {
    it('Should should blahblah', function() {
        return service.getBlahAsync(foo, bar).should.eventually.all.have.property(foobarbaz);
    });
});

您还可以增加测试的超时持续时间。相关文档可在此处找到。

 类似资料:
  • 我正在尝试从请求模块测试GET HTTP方法: 下面是我如何测试 部分的: 但是,我没有找到测试catch部分的方法(当它给出错误并且响应状态不是>=400)。 有什么建议吗? 它也将帮助我解决这个问题,一个简单的例子,另一个代码测试一个承诺的catch部分。

  • 以下测试表现异常: 我应该如何正确处理被拒绝的promise(并测试它)? 如何正确处理失败的测试(即:

  • 我正在尝试使用mocha和mongoose编写一个测试用例。但我编写的以下代码片段在每个“hook:error:timeout of 2000ms extered.确保在此测试中调用了done()回调”之前都给出了错误“Todo”。我无法解决此问题。我是node的初学者。谁能在这个问题上帮我一下吗。提前谢谢。

  • 我正在使用node.js和摩卡单元测试,我希望能够通过npm运行测试命令。当我在测试文件夹中运行摩卡测试时,测试成功运行。但是,当我运行npm测试时,测试给我一个错误。 下面是我的package.json的一个片段: 有人知道为什么npm测试会给我一个错误,但是mocha测试运行正常吗? 谢谢

  • 问题内容: Mocha尝试在默认情况下查找测试文件,如何指定另一个目录,例如? 问题答案: 编辑:不建议使用此选项:https://mochajs.org/#mochaopts 如果要通过仍然仅在命令行上运行但要在文件夹而不是中运行测试来执行此操作,请在文件中创建一个文件,其中包含以下内容: 如果要运行该文件夹和子目录中的所有内容,请将其放入 是通过命令行传递的参数,因此使第一行也就是您要更改测试

  • 我正试着用摩卡和柴对我的猫鼬模型做一个简单的测试 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回promise,请确保它已解决 我想摩卡已经改变了,因为它一直在与以前的项目合作。我错过了什么? 模型方法: