在用户定义的内部使用Jasmine预定义匹配器

时间:2015-11-17 12:44:22

标签: javascript jasmine karma-runner karma-jasmine

我想使用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匹配器比较对象的一些先决条件。

我的问题是:是否可以从使用的匹配器中提取匹配结果以格式化正确的消息,即“预期实际为父母”?

1 个答案:

答案 0 :(得分:2)

我刚检查过 - 事实证明这实际上很容易。像在示例中一样使用预定义匹配器,只需向这些匹配器添加自定义消息。该消息不会替换默认消息,而是附加到消息上。

int main()
{
    std::vector<std::future<void>> laters;

    for (int i = 0; i != n; ++i)
    {
        laters.push_back(std::async(std::launch::async, asyncSleep));
    }
}

如果失败,您会收到

的消息
  

预期未定义要定义'或者更确切地说,预期对象无论父母有什么'。