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。