今天來實際寫幾個函式,首先,先新增一個 util.js 及 util.test.js 檔案後開始撰寫函式吧!
首先在 util.js 撰寫一個函式,來計算正方形體積:
// util.js
export const squareArea = (length, width) => {
return length * width;
};
接下來透過 util.test.js 來進行測試,首先要先把要測試的函式 import 進來,接下來傳入數值長寬,並斷言該函式能進行長寬運算後,得出需要的結果:
// util.test.js
import { squareArea } from "./util";
test("test squareArea function is work", () => {
expect(squareArea(2, 2)).toBe(4);
});
這樣第一個練習函式就順利通過了!
一樣在 util.js 撰寫函式並透過 trim
方法來清除字串的前後空格:
// util.js
export const trim = (string) => {
return string.trim();
};
接下來開始撰寫測試:
別忘記要先引入 trim 函式唷!
// util.test.js
import { squareArea, trim } from "./util";
test("test trim function is work", () => {
expect(trim(" 0912345678")).toBe("0912345678");
});
透過陣列比對可以讓我們知道陣列的長度及值是否一致:
// util.js
export const arrayEquals = (a, b) => {
return (
Array.isArray(a) &&
Array.isArray(b) &&
a.length === b.length &&
a.every((val, index) => val === b[index])
);
};
可以透過 describe
將要測試的兩種情況包覆起來,並分別用各別 test
方法內進行測試,透過 toBeTruthy
、toBeFalsy
來協助斷言回傳值為 true
或 false
:
// util.test.js
import { squareArea, trim, arrayEquals } from "./util";
describe("test arrayEquals function is work", () => {
test("array is equals", () => {
const a = [1, 2, 3];
const b = [1, 2, 3];
expect(arrayEquals(a, b)).toBeTruthy();
});
test("array not equals", () => {
const a = [1, 2, 3];
const b = [1, 2, 3, 4];
expect(arrayEquals(a, b)).toBeFalsy();
});
});
撰寫函式來協助判斷 string 的長度及是否為 “” ,該函式會回傳 true 或 false :
// util.js
export const emptyString = (string) => {
return string.length === 0 && string === "";
};
透過 toBeTruthy
、 toBeFalsy
協助判斷為空字串的情況下回傳值為 true ,不為空字串的情況下回傳值為 false :
// util.test.js
import { squareArea, trim, arrayEquals, emptyString } from "./util";
describe("test emptyString function is work", () => {
test("is empty string", () => {
const string = "";
expect(emptyString(string)).toBeTruthy();
});
test("not empty string", () => {
const string = "123";
expect(emptyString(string)).toBeFalsy();
});
});
https://masteringjs.io/tutorials/fundamentals/compare-arrays