面试题答案
一键面试假设我们有一个名为 get_system_info.sh
的Bash脚本,其中有一个函数 get_system_info
调用外部命令获取系统信息,例如:
#!/bin/bash
get_system_info() {
uname -a
}
我们使用Bats测试框架来编写测试用例,并通过Mock技术模拟外部命令 uname -a
的返回结果。首先,确保你已经安装了Bats。如果没有安装,可以参考Bats的官方文档进行安装。
创建一个测试文件 get_system_info_test.bats
:
#!/usr/bin/env bats
# 加载被测试的脚本
load get_system_info.sh
@test "测试 get_system_info 函数" {
# 模拟 uname -a 的返回结果
function uname() {
echo "Mocked system information"
}
result=$(get_system_info)
assert_equal "$result" "Mocked system information"
}
在上述测试用例中:
- 使用
load
指令加载被测试的脚本get_system_info.sh
。 - 在测试用例中,通过重新定义
uname
函数来模拟uname -a
的返回结果。 - 调用
get_system_info
函数并将结果存储在result
变量中。 - 使用
assert_equal
断言验证函数返回的结果是否与模拟的结果一致。
运行测试:
bats get_system_info_test.bats
这样就通过Mock技术在Bats测试框架中对调用外部命令的函数进行了单元测试。