chai-dynamodb
一個 Chai 外掛,新增一個匹配器來檢查字串中是否使用了 DynamoDB 保留字。對於測試 AWS Lambda 程式碼非常有用!
使用方式
另請參閱 測試
瀏覽器端
在 Chai 之後引入 chai-dynamodb
<script src="chai.js"></script>
<script src="chai-dynamodb.js"></script>
伺服器端
讓 chai 使用 chai-dynamodb
var chai = require('chai');
chai.use(require('chai-dynamodb'));
斷言
檢查任何字串中是否有 DynamoDB 保留字,該保留字沒有以 #
或 :
作為前綴(習慣上分別用於表示運算式屬性名稱和值)。如果字串中沒有任何會導致 DynamoDB 呼叫失敗的保留字,則斷言為真。
noReservedWords
const safe = 'id, phone, email';
const notSafe = 'id, name, phone, email';
const usingAttributeNamePrefix = 'id, #name, phone, email';
const usingAttributeValuePrefix = 'username = :name';
// using should-style assertions
safe.should.have.noReservedWords();
notSafe.should.have.noReservedWords(); // fails
usingAttributeNamePrefix.should.have.noReservedWords();
usingAttributeValuePrefix.should.have.noReservedWords();
// using expect-style assertions
expect(safe).to.have.noReservedWords();
expect(notSafe).to.have.noReservedWords(); // fails
expect(usingAttributeNamePrefix).to.have.noReservedWords();
expect(usingAttributeValuePrefix).to.have.noReservedWords();
// using tdd assertions
assert.noReservedWords(safe);
assert.noReservedWords(notSafe); // fails
assert.noReservedWords(usingAttributeNamePrefix);
assert.noReservedWords(usingAttributeValuePrefix);
noReservedWordsExcept
當計劃使用特定關鍵字時很有用。接受一個字串或一個字串陣列作為參數。不區分大小寫。
const usingAttributeNamePrefix = 'SET #name = :fullname';
const usingAttributeValuePrefix = 'SET username = :name';
const missingPrefix = 'SET username = name';
// using should-style assertions
usingAttributeNamePrefix.should.have.noReservedWordsExcept('set');
usingAttributeValuePrefix.should.have.noReservedWordsExcept('SET');
missingPrefix.should.have.noReservedWordsExcept(['SET', 'NAME']);
missingPrefix.should.have.noReservedWordsExcept('SET'); // fails
// using expect-style assertions
expect(usingAttributeNamePrefix).to.have.noReservedWordsExcept('set');
expect(usingAttributeValuePrefix).to.have.noReservedWordsExcept('SET');
expect(missingPrefix).to.have.noReservedWordsExcept(['SET', 'NAME']);
expect(missingPrefix).to.have.noReservedWordsExcept('SET'); // fails
// using tdd assertions
assert.noReservedWordsExcept(usingAttributeNamePrefix, 'set');
assert.noReservedWordsExcept(usingAttributeValuePrefix, 'SET');
assert.noReservedWordsExcept(missingPrefix, ['SET', 'NAME']);
assert.noReservedWordsExcept(missingPrefix, 'SET'); // fails
限制
DynamoDB 是 AWS 上一個積極開發的產品,因此他們可能會在目前 573 個字的保留列表中添加更多。這個函式庫可以幫助您提前預防那些困擾我們的小錯誤,但如果這是攸關任務的,您應該自己檢查 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html。