2016-07-11 19 views
2

Kann jemand ein Beispiel geben, wie man das beforeEach benutzt? http://www.node-tap.org/api/ Idealerweise wäre ein Beispiel für die Version des Versprechens, aber auch ein Beispiel für eine Rückrufversion. HierWie benutze ich beforeEach in node-tap?

ist ein Test, den ich geschaffen, die gut funktioniert:

'use strict'; 

const t = require('tap'); 
const tp = require('tapromise'); 
const app = require('../../../server/server'); 
const Team = app.models.Team; 

t.test('crupdate', t => { 
    t = tp(t); 

    const existingId = '123'; 
    const existingData = {externalId: existingId, botId: 'b123'}; 
    const existingTeam = Team.create(existingData); 

    return existingTeam.then(() => { 
    stubCreate(); 

    const newId = 'not 123' 
    const newData = {externalId: newId, whatever: 'value'}; 
    const newResult = Team.crupdate({externalId: newId}, newData); 

    const existingResult = Team.crupdate({externalId: existingId}, existingData); 

    return Promise.all([ 
     t.equal(newResult, newData, 'Creates new Team when the external ID is different'), 
     t.match(existingResult, existingTeam, 'Finds existing Team when the external ID exists') 
    ]); 
    }); 
}) 
.then(() => { 
    process.exit(); 
}) 
.catch(t.threw); 


function stubCreate() { 
    Team.create = data => Promise.resolve(data); 
} 

Bevor ich etwas tun, ich will existingTeam bestehen bleiben. Nachdem es gespeichert wurde, möchte ich stub Team.create. Nach diesen beiden Dingen möchte ich anfangen zu testen. Ich denke, es wäre sauberer, wenn ich anstatt Promise.all oder vielleicht den Testcode zu kopieren, könnte ich beforeEach verwenden.

Wie würde ich dies umwandeln, um beforeEach zu verwenden? Oder was ist ein Beispiel für seine Verwendung?

Antwort

2

Einfach, Rückkehr nur Versprechen von Callback-Funktion

const t = require('tap'); 
const tp = require('tapromise'); 
const app = require('../../../server/server'); 
const Team = app.models.Team; 

const existingId = '123'; 
const existingData = { 
    externalId: existingId, 
    botId: 'b123' 
}; 

t.beforeEach(() => {  
    return Team.create(existingData).then(() => stubCreate()); 
}); 

t.test('crupdate', t => { 
    t = tp(t); 

    const newId = 'not 123' 
    const newData = { 
    externalId: newId, 
    whatever: 'value' 
    }; 
    const newResult = Team.crupdate({ 
    externalId: newId 
    }, newData); 

    const existingResult = Team.crupdate({ 
    externalId: existingId 
    }, existingData); 

    return Promise.all([ 
    t.equal(newResult, newData, 'Creates new Team when the external ID is different'), 
    t.match(existingResult, existingTeam, 'Finds existing Team when the external ID exists') 
    ]); 
}).then(() => { 
    process.exit(); 
}).catch(t.threw); 


function stubCreate() { 
    Team.create = data => Promise.resolve(data); 
} 
+0

ich jetzt sehen. Die 't.test'-Funktion ist wie ein' then' auf was auch immer von 'beforeEach' zurückgegeben wird. – guptron