在 gtest 中为返回 nlohmann::json 对象的函数编写单元测试

Writing a unit test in gtest for a function returning an nlohmann::json object

这是我要为其创建测试的函数:

static nlohmann::json parse_json(const std::string& file_path)
{
    std::ifstream i(file_path);
    nlohmann::json j = nlohmann::json::parse(i);
    return j;
}

我理解这种类型的测试:

TEST(FactorialTest, HandlesZeroInput) {
  EXPECT_EQ(Factorial(0), 1);
}

但是当我的函数返回一个对象时,我不确定如何完成它。这是嘲笑发挥作用的地方吗? 我需要在哪里写这样的东西:

class fakeJsonObject {
    public:
        MOCK_METHOD(nlohmann::json, parse_json, std::string& file_path);
};

然后用我的模拟对象创建一个测试并将其与从我的 parse_json 函数创建的对象进行比较?

一般答案:好的单元测试遵循 AAA 规则

安排:准备要测试的东西的地方

Act : 正在测试的函数调用

断言:断言函数调用给您正确的结果。

因此,在您的情况下,您必须准备/或更好地生成一个包含 json 数据的文件。 (排列).

调用函数。 (行动)

断言您得到了一个 nlhohmann::json 对象,该对象与文件中包含的 json 数据相关。(断言)