私はsequelizeプロジェクトにunit/integrationテストを追加しようとしていますが、postgresの方言からsqliteに移行する際に問題が発生しています。私は 'id'の 'defaultValue'関数をオーバーライドしようとしています。これにより、CREATE TABLEの構文は正しくなりますが、元のdefaultValueは、.create()
によって生成されたINSERT文で使用されます。テスト目的でsequelize defaultValue関数をオーバーライドするにはどうすればよいですか?
私は失敗テストで説明している問題を示すminimal sample projectを作成しました。ここで
は、関連するコードスニペットです:
User = sequelize.define('User', {
id: {
type: Sequelize.UUID,
field: 'id',
defaultValue: sequelize.literal("uuid_generate_v1mc()"),
primaryKey: true
},
name: {
type: Sequelize.STRING,
field: "first_name"
},
});
// why doesn't setting these attributes override the default value
// provided by User.create?
User.attributes.id.defaultValue='b9c96442-2c0d-11e6-b67b-9e71128cae77';
User.tableAttributes.id.defaultValue='b9c96442-2c0d-11e6-b67b-9e71128cae77';
はdefaultValue機能を注入または模擬するための最良の方法は何ですか?私はそれがうまく作った方法
ありがとう、これはトリックでした。受け入れられupvoted。 –