chai-dynamodb

一個 Chai 外掛,新增一個匹配器來檢查字串中是否使用了 DynamoDB 保留字。對於測試 AWS Lambda 程式碼非常有用!

NPM Version NPM License NPM Downloads
NPM

使用方式

另請參閱 測試

瀏覽器端

在 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。