推特 statuses/destroy 未在 mocha/chai 中执行
twitter statuses/destroy not executing in mocha/chai
我正在尝试在节点中进行 node/twitter 路由测试后进行清理,并且当我的 post 请求删除我的 after 子句中的 tweet 时,它没有执行并且 twitter API 也不会抛出错误...
我在想这可能是我传递推文 ID 的方式,没有正确使用函数范围。对于那些不熟悉的人,我将 Twitter module from npm 用于 node.js:
describe( "The nodeshell's /tweet route", function() {
// Logic to run before each test
var tid = "";
before( function( done ) {
startServer( done );
});
// Logic to run after each test
after( function( done ) {
client.post('statuses/destroy/:id', {id: tid}, function(error, params, response){
if(error){
console.log(error);
throw error;
}
});
stopServer(done);
});
it( 'should return 200 when queried with a post request containing a valid tweet', function ( done ) {
this.timeout(7000);
var tweets = {
tweet: "test" + uuid.v4()
};
apiHelper('post', uri, 200, tweets, function(err, res, body){
expect(err).to.not.exist;
tid = body.id;
done();
});
});
});
在此先感谢您的帮助。
要使异步函数正常工作,您应该在 client.post
回调中调用 stopServer(done);
。所以你的 after
函数将变成:
after(function(done) {
client.post('statuses/destroy/:id', {id: tid}, function(error, params, response){
if(error){
console.log(error);
done(error);
}
stopServer(done);
});
});
我正在尝试在节点中进行 node/twitter 路由测试后进行清理,并且当我的 post 请求删除我的 after 子句中的 tweet 时,它没有执行并且 twitter API 也不会抛出错误...
我在想这可能是我传递推文 ID 的方式,没有正确使用函数范围。对于那些不熟悉的人,我将 Twitter module from npm 用于 node.js:
describe( "The nodeshell's /tweet route", function() {
// Logic to run before each test
var tid = "";
before( function( done ) {
startServer( done );
});
// Logic to run after each test
after( function( done ) {
client.post('statuses/destroy/:id', {id: tid}, function(error, params, response){
if(error){
console.log(error);
throw error;
}
});
stopServer(done);
});
it( 'should return 200 when queried with a post request containing a valid tweet', function ( done ) {
this.timeout(7000);
var tweets = {
tweet: "test" + uuid.v4()
};
apiHelper('post', uri, 200, tweets, function(err, res, body){
expect(err).to.not.exist;
tid = body.id;
done();
});
});
});
在此先感谢您的帮助。
要使异步函数正常工作,您应该在 client.post
回调中调用 stopServer(done);
。所以你的 after
函数将变成:
after(function(done) {
client.post('statuses/destroy/:id', {id: tid}, function(error, params, response){
if(error){
console.log(error);
done(error);
}
stopServer(done);
});
});