sinonのcalledWithExactlyで引数チェックする場合は、chai.expectよりsinon.assertが便利
Chai使ってると、sinonのテストもChaiのアサーション使いたくなりますよね。 dynamodbStub = sinon.stub(this, ‘request’) expect(dynamodbStub.call […]
広告ここから
広告ここまで
目次
Chai使ってると、sinonのテストもChaiのアサーション使いたくなりますよね。
dynamodbStub = sinon.stub(this, 'request')
expect(dynamodbStub.calledWithExactly(
'DynamoDB',
'query',
{
TableName: 'Example-table',
KeyConditionExpression: ' username = :username',
ExpressionAttributeValues: {
':username': 'user_id'
},
ScanIndexForward: false,
Limit: 1
}
)).to.be.equal(true)
ただしこれだと、エラー結果が以下のようになってちょっとつらい。
2) Example #test() test call params
AssertionError: expected false to equal true
+ expected - actual
-false
+true
sinon.assertを使う
アサーションをsinonのものに変えてみます。
sinon.assert.calledWithExactly(
dynamodbStub,
'DynamoDB',
'query',
{
TableName: 'Example-table',
KeyConditionExpression: ' username = :username',
ExpressionAttributeValues: {
':username': 'user_id'
},
ScanIndexForward: false,
Limit: 1
}
)
calledWithExactlyで比較した結果が出るようになりました。
AssertError: expected request to be called with exact arguments DynamoDB, query, {
ExpressionAttributeValues: { :username: "user_id" },
KeyConditionExpression: "username = :username",
Limit: 1,
ScanIndexForward: false,
TableName: "Example-table"
}
request(DynamoDB, query, {
ExpressionAttributeValues: { :username: "userId" },
KeyConditionExpression: "username = :username",
Limit: 1,
ScanIndexForward: false,
TableName: "example-table"
})