【发布时间】:2018-04-11 20:39:16
【问题描述】:
我正在尝试为 Jasmine 实现一个自定义匹配器,我想检查给定的对象属性值是否在其他两个对象属性值的范围内。
这是我目前得到的:
let matcher = {
toLieWithin: function (util: jasmine.MatchersUtil, customEqualityTesters: Array<jasmine.CustomEqualityTester>): jasmine.CustomMatcher {
return {
compare: function (actual: any, expected: any): jasmine.CustomMatcherResult {
let result: jasmine.CustomMatcherResult = {
pass: false,
message: ''
};
result.pass = liesWithin(actual, expected);
return result;
}
}
}
};
function liesWithin<T>(objActual: T, objExpected: T[]): boolean {
let output: boolean;
if(objExpected) {
output = objActual.x > objExpected[0].x && objActual.x < objExpected[1].x && objActual.y > objExpected[0].y && objExpected[1].y;
}
return output;
}
在这里,我假设实际有两个属性x 和y。并且预期是两个对象的数组,它们也有两个属性,每个 x 和 y。
actual = {x: -5, y: -10}; expected = [{x: -10, y: -17},{x: 0, y: 0}];
现在,我相信对于上面给出的简单示例,这种情况是可行的。但是当我试图将它实现为泛型时,我如何找到该对象具有哪些属性?我的方法正确吗?谁能给我一些想法,我该如何实现这样的方法。
谢谢。
【问题讨论】:
标签: javascript typescript jasmine jasmine-matchers