为什么创build和删除Azure表失败?

我想知道为什么试图运行下面的testing套件失败时,我试图删除我已经存储实体的表。我得到的错误是

1)Azure存储云存储操作“毕竟”挂钩:错误:指定的资源不存在。 RequestId:3745d709-fa5e-4a2b-b517-89edad3efdd2发表时间:2013-12-03T22:26:39.5532356Z

如果我注释掉实际插入的数据,那么它每隔一段时间都会失败,如果我尝试插入数据,那么每次都会失败,并且附加一个“指定的表不存在”。

对于第一种情况,这似乎表明在表创build中存在某种延迟,所以在其他所有testing中都是成功的,对于第二种情况,似乎表明即使我的callback函数是在表创build后调用的,该表还没有准备好数据插入。

testing套件和相关代码如下所示:

describe('cloud storage operations', function () { var storage; before(function (done) { this.timeout(5000); storage = AzureStorage.usingTable('TEST', done); }); after(function (done) { storage.deleteTable(done); }); it('should store without trouble', function (done) { storage.save(factory.createChangeSet()).then(done, done); }); }); 

… //从azure.js剪下

  var AzureStorage = function (storageClient, tableName, callback) { assert(storageClient && tableName && partitionKey, "Missing parameters"); this.storageClient = storageClient; this.tableName = tableName; var defaultCallback = function (err) { if (err) { throw error; } }; this.storageClient.createTableIfNotExists(this.tableName, function () { callback(); } || defaultCallback); }; AzureStorage.usingTable = function (tableName, callback) { return new AzureStorage( azure.createTableService(accountName, accountKey) , tableName , callback ); }; AzureStorage.prototype.deleteTable = function (callback) { this.storageClient.deleteTable(this.tableName, callback); }; 

我已经用c#库打了这个,但我很确定错误消息指出表不能创build,因为一个操作仍在进行一个同名的表。 考虑到后端支持存储,这是不可能的。 该表需要从3个本地副本以及配对数据中心的副本中删除。

有了这种asynchronous操作,build立一个足够快的testing,这将是一个挑战。

解决方法可能是增加附加到“testing”表名称的值,该名称对于该testing运行是唯一的。