能够对您的 iOS 和 Android 应用进行单元测试对于任何团队来说都至关重要。让我们看看如何使用 NativeScript 8.0 进行单元测试。
您需要最新的 NativeScript CLI 8.0.2 或更高版本。
npm install -g nativescript
然后,您可以使用 ns -v
命令确认您拥有最新版本。
您可以使用以下命令将单元测试运行器添加到任何应用中:
ns test init
系统会提示您选择要使用的单元测试框架。
? Select testing framework: › - Use arrow-keys. Return to submit.
❯ jasmine
mocha
qunit
这将安装几个单元测试依赖项,并在您的应用中添加一个 tests
文件夹,其中包含以下 tests/example.ts
规范(例如,使用 Jasmine):
// A sample Jasmine test
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
ns test ios
ns test android
现在我们已经设置了单元测试,我们可以测试应用的各种方面。例如,让我们首先创建一个 iOS 和 Android 特定的单元测试。
创建 tests/device.android.ts
文件,内容如下:
import { Device } from "@nativescript/core";
describe("Android Device", function() {
it("should use > 23 SDK", function() {
expect(parseFloat(Device.sdkVersion) > 23).toBeTrue();
});
});
当我们现在使用 ns test android
进行测试时,我们将看到:
类似地,让我们创建 tests/device.ios.ts
文件,内容如下:
import { Device } from "@nativescript/core";
describe("iOS Device", function() {
it("should use > 14 SDK", function() {
expect(Device.sdkVersion).toBe('12');
});
});
当我们现在使用 ns test ios
进行测试时,我们将看到:
等等!这是个错误!
是的,绝对是一个失败的测试。让我们使用以下方法修复它:
import { Device } from "@nativescript/core";
describe("iOS Device", function() {
it("should use > 14 SDK", function() {
expect(parseFloat(Device.sdkVersion) > 14).toBeTrue();
});
});
当我们现在使用 ns test ios
进行测试时,我们将看到:
如果您已经在应用中使用了单元测试,并且只是更新依赖项,请确保您拥有上面提到的最新 CLI,以及在您的 devDependencies 中包含以下内容:
"devDependencies": {
...,
"@nativescript/unit-test-runner": "~2.0.0",
"@nativescript/webpack": "beta",
...
}
对 iOS 和 Android 的 NativeScript 应用进行单元测试既高效又易于使用。我们希望这能帮助您为应用中的关键路径提供一些覆盖范围。
您也可以尝试使用 NativeScript 的不同“风格”,并且很快就会有一篇后续博文详细介绍一些特定风格的额外内容。