How to get Mocha to fail a test

后端 未结 4 548
遇见更好的自我
遇见更好的自我 2021-02-02 07:15

I have the following test:

it.only(\'validation should fail\', function(done) {
    var body = {
        title: \"dffdasfsdfsdafddfsadsa\",
        description:          


        
相关标签:
4条回答
  • 2021-02-02 08:06

    You can call assert.fail:

    it("should return empty set of tags", function()
    {
        assert.fail("actual", "expected", "Error message");
    });
    

    Also, Mocha considers the test has failed if you call the done() function with a parameter.

    For example:

    it("should return empty set of tags", function(done)
    {
        done(new Error("Some error message here"));
    });
    

    Though the first one looks clearer to me.

    0 讨论(0)
  • 2021-02-02 08:06

    This simple throw is working for me

    describe('Lead', () => {
      it('should create a new lead', async () => {
         throw 'not implemented'
      })
    })
    
    0 讨论(0)
  • 2021-02-02 08:07

    In the ES2017 async/await world chai-as-promised is not needed as much. Although simple rejections are one place chai-as-promised remains a little neater to use.

    A catch is required if you want to test the error in more detail.

    it.only('validation should fail', async function(){
        let body = { ... }
        let rules = eventsValidation.eventCreationRules()
        let valMessages = eventsValidation.eventCreationMessages()
    
        try {
            await indicative.validateAll(rules, body, valMessages)
        } catch (error) {
            expect(error).to.be.instanceOf(Error)
            expect(error.message).to.match(/Oh no!/)
            return
        }
        expect.fail(null, null, 'validateAll did not reject with an error')
        // or throw new Error('validateAll did not reject with an error')
    })
    

    async/await requires Node.js 7.6+ or a compiler like Babel

    0 讨论(0)
  • 2021-02-02 08:22

    Use chai-as-promised, with native Mocha promise handlers.

    var chai = require('chai').use(require('chai-as-promised'));
    var should = chai.should(); // This will enable .should for promise assertions
    

    You no longer need done, simply return the promise.

    // Remove `done` from the line below
    it.only('validation should fail', function(/* done */) {
        var body = {
            title: "dffdasfsdfsdafddfsadsa",
            description: "Postman Description",
            beginDate: now.add(3, 'd').format(),
            endDate: now.add(4, 'd').format()
        }
    
        var rules = eventsValidation.eventCreationRules();
        var valMessages = eventsValidation.eventCreationMessages();
    
        // Return the promise
        return indicative
            .validateAll(rules, body, valMessages)
            .should.be.rejected; // The test will pass only if the promise is rejected
    
        // Remove done, we no longer need it
        // done();
    });
    
    0 讨论(0)
提交回复
热议问题