2016-07-29 12 views
0

beteiligt habe ich unten Unit-TestMocha Unit-Test Knex Transaktion

knex.transaction(function(trx) { 
    wrapperobj.insertData(trx, (err, res) => { 
    if (err) { 
     return done(err); 
    } 
    expect(result.rowCount).to.be.equal(2); //fails, rowcount is 1 
    trx.rollback(new Error('rollback')); 
    }) 
}) 
.asCallback((err, result) = > { 
    expect(err).to.match(/rollback/); 
    done(); 
}); 

Er druckt 2 Fehler 1) Uncaught AssertionError: voraussichtlich 1 gleich 2. Dies ist, was erwartet wird. 2) "nach jedem" Haken für ... Fehler: Timeout von 2000ms überschritten. Stellen Sie sicher, dass der Rückruf done() in diesem Test aufgerufen wird.

Wie verhindere ich eine zweite Fehlermeldung?

kann ich versuchen, setzen wie unten fangen um, aber ordentlich

knex.transaction(function(trx) { 
    wrapperobj.insertData(trx, (err, res) => { 
     try { 
      expect(err).to.be.null; 
      expect(result).not.to.be.empty; 
      expect(result.rowCount).to.be.equal(2); 
     } 
     catch(err1) { 
      done(err1); 
     } 
     trx.rollback(new Error('rollback')); 
     }) 
     .asCallback((err, result) => done()) 

Antwort

-1

Dies kann nicht die Wurzel des Problems aussehen tut, aber man konnte durch Zugabe der Flagge --timeout 15000 die Standard-Timeout erhöhen, wenn Sie laufen der mocha Befehl zum Testen oder idealerweise in einer mocha.opts Konfigurationsdatei; mit der gewünschten Anzahl an Millisekunden (dies wird auf 15000 oder 15 Sekunden festgelegt. Von the docs:

-t, --timeout

Specifies the test-case timeout, defaulting to 2 seconds. To override you may pass the timeout in milliseconds, or a value with the s suffix, ex: --timeout 2s or --timeout 2000 would be equivalent.