在用户定义的内部使用 Jasmine 预定义匹配器
Using Jasmine predefined matchers inside user defined one
我想使用 Jasmine 框架定义我自定义的、用户定义的匹配器。
我要验证两个复杂对象之间的关系。
例如:
customMatchers = {
toBeSiblings: function(util, customEqualityTesters) {
return {
compare: function(actual, expected) {
expect(actual.parent).toBeDefined()
expect(expected.parent).toBeDefined()
result = {
pass: util.equals(actual.parent, expected.parent, customEqualityTesters)
};
if (!result.pass) {
result.message = "Expected object: " + actual + " to be sibling of: " + expected;
}
return result;
}
};
}
};
我想以与上述示例类似的方式使用现有的 Karma 匹配器测试比较对象的一些先决条件。
我的问题是:是否可以从使用的匹配器中提取匹配结果来格式化正确的消息,即 "Expected actual to has parent"?
我刚刚查了一下——事实证明这其实很简单。像在示例中一样使用预定义的匹配器,并简单地向这些匹配器添加自定义消息。该消息不会替换默认消息,而是附加到它。
expect(actual.parent).toBeDefined("or more precisely, expected object " + actual + " to have a parent");
如果失败,您会收到消息
Expected undefined to be defined 'or more precisely, expected object whatever to have a parent'.
我想使用 Jasmine 框架定义我自定义的、用户定义的匹配器。 我要验证两个复杂对象之间的关系。
例如:
customMatchers = {
toBeSiblings: function(util, customEqualityTesters) {
return {
compare: function(actual, expected) {
expect(actual.parent).toBeDefined()
expect(expected.parent).toBeDefined()
result = {
pass: util.equals(actual.parent, expected.parent, customEqualityTesters)
};
if (!result.pass) {
result.message = "Expected object: " + actual + " to be sibling of: " + expected;
}
return result;
}
};
}
};
我想以与上述示例类似的方式使用现有的 Karma 匹配器测试比较对象的一些先决条件。
我的问题是:是否可以从使用的匹配器中提取匹配结果来格式化正确的消息,即 "Expected actual to has parent"?
我刚刚查了一下——事实证明这其实很简单。像在示例中一样使用预定义的匹配器,并简单地向这些匹配器添加自定义消息。该消息不会替换默认消息,而是附加到它。
expect(actual.parent).toBeDefined("or more precisely, expected object " + actual + " to have a parent");
如果失败,您会收到消息
Expected undefined to be defined 'or more precisely, expected object whatever to have a parent'.