Jasmine

習題預習

User ask:
給我5題Jasmine的中文問題

ChatGPT answer:
  1. Jasmine喜歡做什麼樣的活動?
  2. Jasmine的家人有幾個兄弟姊妹?
  3. Jasmine最喜歡的食物是什麼?
  4. Jasmine最崇拜的偶像是誰?
  5. Jasmine平常喜歡用哪種顏色的筆寫字?

說明知識

User ask:
以中文說明Jasmine並舉例

ChatGPT answer:

Jasmine是一個用於JavaScript測試的行為驅動開發(BDD)框架。它的設計目的是使JavaScript測試變得簡單明了,並且能夠直觀地表達代碼的預期行為。

在Jasmine中,測試以“描述”(describe)和“斷言”(expect)的形式進行。描述是對代碼功能的解釋性的文字描述,可以嵌套描述和斷言,進一步剖析代碼的不同層面。 斷言是一個在測試中對代碼的預期結果的陳述。Jasmine提供了多種斷言方法,比如toBe,toEqual,toContain等等。

舉個例子,假設我們有一個JavaScript函數,例如:

function addNumbers(a, b) {
  return a + b;
}

要測試這個函數的行為,我們可以使用Jasmine。我們可以寫一個描述來解釋此函數的功能,然後寫一個斷言來驗證函數是否正確,如下所示:

describe('addNumbers function', function() {
  
  it('adds two numbers and returns the correct result', function() {
    var result = addNumbers(2, 3);
    expect(result).toEqual(5);
  });
  
});

在這個示例中,我們編寫了一個描述來說明這個測試是關於“addNumbers function”函數的。在描述的內部,我們定義了一個it(也稱為“測試用例”),在此測試用例中,我們使用了addNumbers函數來加入兩個數字,然後使用Jasmine的expect斷言來驗證這個函數的返回值是否為5。如果測試通過,Jasmine將會顯示一個綠色符號表示成功,否則將會顯示一個紅色符號表示失敗。

彙總重點

User ask:
以中文條列Jasmine的重點

ChatGPT answer:

抱歉,我需要更多的上下文才能回答這個問題,Jasmine是什麼? – AI助手

知識測驗

User ask:
以中文給我5題Jasmine的中等難度問題,並在後面列出答案

ChatGPT answer:
  1. 給定一個整數 n,輸出所有小於 n 的正整數中,能被 3 或 5 整除的數字的總和。
    範例輸入:10
    範例輸出:8 (3 + 5)

  2. 給定一個整數陣列 nums 和一個目標整數 target,找出 nums 中兩個數字的和等於 target,並返回它們的索引。
    假設每個輸入僅有一個解,且同一個元素不能使用兩次。
    範例輸入:nums = [2, 7, 11, 15], target = 9
    範例輸出:[0, 1]

  3. 實現一個費伯納契數列的函數。費伯納契數列是一系列的整數,其中每個數字都是前兩個數字的和。
    範例輸入:10
    範例輸出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

  4. 實現一個函數,將一個給定的字符串轉換為小寫。
    範例輸入:Jasmine
    範例輸出:jasmine

  5. 給定一個整數 x,實現一個函數,計算 x 的平方根。如果 x 是負數,則返回 null。
    範例輸入:16
    範例輸出:4.0

答案:
1.
function find_sum(n){
let sum = 0;
for (let i = 1; i < n; i++){
if (i % 3 === 0 || i % 5 === 0){
sum += i;
}
}
return sum;
}

function twoSum(nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++){
let complement = target - nums[i];
if (map.has(complement)){
return [map.get(complement), i];
}
map.set(nums[i], i);
}
}

function fibonacci(n) {
let res = [];
let a = 0;
let b = 1;
for (let i = 0; i < n; i++){
res.push(a);
let temp = a + b;
a = b;
b = temp;
}
return res;
}

function toLowerCase(str) {
return str.toLowerCase();
}

function sqrt(x) {
if (x < 0) return null;
let left = 0;
let right = x;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (mid * mid === x) return mid;
if (mid * mid < x) left = mid + 1;
if (mid * mid > x) right = mid - 1;
}
return right;
}