2
注:我也在Waterline repo上爲此打開了issue,但沒有得到比我的解決方法更簡單的解決方案。如何比較JSON對象和Waterline模型實例?
我有所有的默認屬性(例如createdDate
,modifiedDate
)和一些自定義的像emailAddress
,password
(在toJSON()
抑制)等,並與其他模型一些額外的關聯用戶模型。
將包含JSON格式的用戶模型實例的控制器響應與水線模型實例進行比較的正確方法是什麼?
例如,這個變通辦法:
request
.get('/user/1')
.end(function (err, res) {
expect(res.body).to.deep.equal(
JSON.parse(JSON.stringify(// Workaround for toJSON not stringifying dates
_.cloneDeep(// Workaround for associations being lost
testUser.toJSON() // `testUser` is a Waterline model instance that should be equivalent to the requested data (`/user/1`)
)
))
);
done();
});
但只是一切我試過沒有;任何關聯都會丟失(cloneDeep()
可解決此問題),或者將字符串日期與Date對象進行比較(JSON.parse(JSON.stringify())
可解決此問題)。
有沒有比較JSON和Waterline模型實例的更好方法?也許一些內置的工具?
不確定這應該是必要的,因爲模式已經由Waterline定義過一次,它必須已經具備了執行此操作所需的邏輯,但我還沒有找到它。 – blah238 2014-08-27 23:57:24