簡體   English   中英

module.export玩笑測試中的多個功能

[英]module.exports multiple functions in Jest testing

閱讀Jest文檔后,當提到從測試文件中導出單個函數時,它們顯示以下示例:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

現在,如果我有多個特定功能,則要導出到測試文件中,如下所示:

function sum(a, b) {
  return a + b;
}
function multiply(a, b) {
  return a * b;
}
function subtract(a, b) {
  return a - b;
}
module.exports = sum;
module.exports = multiply;

multiply功能是唯一導出的功能。 如何使這些功能導出? 還是僅部分文件?

您可以執行以下操作:

module.exports = {};
module.exports.sum = function sum(a, b) {
  return a + b;
}
module.exports.multiply = function multiply(a, b) {
  return a * b;
}
module.exports.subtract = function subtract(a, b) {
  return a - b;
}

最終,您可以像這樣使用它:

var MyMathModule = require('./my_math_module');
MyMathModule.sum(a, b);
MyMathModule.multiply(a, b);
MyMathModule.subtract(a, b);

首先,在您的示例中,您在此處所做的全部工作是使用函數覆蓋exports對象(這完全可以)

exportsmodule.exports是一個對象,實際上是相同的對象(即module.exports === exports // true

要執行您想要的操作,可以通過以下兩種方法進行:

exports.sum = sum
exports.multiply = multiply

要么

module.exports = { sum: sum, multiply: multiply } // etc

要么

module.exports.sum = sum
module.exports.multiply = multiply

考慮到這個問題的答案,我將在此處粘貼兩種方法來做同一件事。

例如,您有一個名為exercise5的JS文件,如下所示:


//You can create an object with functions, as follows:

const wordAnalysis = {
    type: (word) => typeof (word),
    whiteSpaces: (word) => {
        let wordAnalysis = word.includes(' ')

        if (wordAnalysis) {
            return 'It has spaces'
        } else {
            return "It doesn't has spaces"
        }
    }
}

//Or you can create several single functions, like the following:

function numberAnalysis(word) {
    let isANumber = typeof (word) === 'number' ? true : false
    return isANumber
}


// în order to avoid overwriting the module.exports, it is needed to do one of the following (I chose the first one):

// 1)
module.exports.firstPlace = wordAnalysis
module.exports.secondPlace = numberAnalysis
// 2)

// module.exports = {
    // functions: functions,
    // isANumber: isANumber
// }

// 3)
// exports.functions = functions
// exports.isANumber = isANumber

// 4)

// exports = {
//     functions: functions,
//     isANumber: isANumber
// }

現在,文件測試名為exercise5.test.js:

const wordAnalysis = require('./exercise5')
const numberAnalysis = require('./exercise5')


test('It should give me the type of what was typed', () => {
    expect(wordAnalysis.firstPlace.type('teste')).toEqual('string')
})

test('It should give me the type of what was typed', () => {
    expect(wordAnalysis.firstPlace.type(22)).toEqual('number')
})


test("It should give true if what is typed has at least a space or false if it doesn't", () => {
    expect(wordAnalysis.firstPlace.whiteSpaces('Jon is cool')).toEqual('It has spaces');
})
test("It should give true if what is typed has at least a space or false if it doesn't", () => {
    expect(wordAnalysis.firstPlace.whiteSpaces('AllTogetherNow')).toBe("It doesn't has spaces");
})

test('it should analyse if the given expression is a number or not', () => {
    expect(numberAnalysis.secondPlace(2)).toBeTruthy()
})

test('it should analyse if the given expression is a number or not', () => {
    expect(numberAnalysis.secondPlace('jon')).toBeFalsy()
})


您唯一需要了解的是導出/導入正確的對象/函數,並且在開發測試時當然會調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM