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。