【发布时间】:2017-12-05 21:27:10
【问题描述】:
我有以下测试代码来验证在调用返回承诺的函数后,结果数组与存根数组相同。
it('Should return locations', () => {
const result = loginSvc.getLocations()
expect(result).to.eventually.eql(['location1', 'asd', 'location3', 'location4', 'location5'])
})
loginSvc.getLocations() 只是一个被模拟并返回数组的函数:['location1', 'location2', 'location3', 'location4', 'location5']
当我运行测试时,它并没有像应有的那样失败,甚至没有成功作为误报,并且在控制台中我得到了这个:
错误日志:'未处理的承诺拒绝',AssertionError{message:'预计 [ Array(5) ] 与 [ Array(5) ] 具有相同的成员',showDiff:true,实际:['location1',' location2','location3','location4','location5'],预期:['location1','asd','location3','location4','location5'],堆栈:'AssertionError@http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:9320:24 断言@http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:239:31 somethingMethod@http://localhost:9000/base/node_modules/chai-things/lib/chai-things.js?da5f13ef7d7d30f512b1cd8c3a12b3ed43cd7d31:97:30 覆盖方法包装器@http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:8932:38 allMethod@http://localhost:9000/base/node_modules/chai-things/lib/chai-things.js?da5f13ef7d7d30f512b1cd8c3a12b3ed43cd7d31:165:30 覆盖方法包装器@http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:8932:38 http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:3379:16 方法包装器@http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae:7709:30 http://localhost:9000/base/node_modules/chai-as-promised/lib/chai-as-promised.js?ac71de40b7ca85a0488f7d3c971a22ddd0e149a8:308:31 运行@http://localhost:9000/base/spec.js?20bf9e1ddf32e8fc2bfe38226be11b7e65336abf:72447:29 http://localhost:9000/base/spec.js?20bf9e1ddf32e8fc2bfe38226be11b7e65336abf:72460:33 flush@http://localhost:9000/base/spec.js?20bf9e1ddf32e8fc2bfe38226be11b7e65336abf:72685:11',行:243,sourceURL:'http://localhost:9000/base/node_modules/chai/chai.js?40e7aa72e9665366bfd82579520de4fb0754dfae'}
但是测试通过了
【问题讨论】:
-
请提供所有相关代码。没有 loginSvc.getLocations。目前尚不清楚 AngularJS 服务是如何使用原生承诺的。这个问题甚至没有提到使用了哪个测试框架(Chai 与框架无关)。
标签: javascript angularjs chai