ES6导入嵌套函数 - 摩卡

时间:2017-11-26 13:42:14

标签: javascript ecmascript-6 automation mocha chai

我正在使用ES6,我想开始使用mocha& amp;柴

我当前的测试文件代码是:

const assert = require('chai').assert;
var app = require('../../../../src/app/login/loginController').default;


describe('login Controller tests', function(){
    it('no idea ', function(){
        let result = app();
        assert.equal(result, 'hello');
    })
})

我的loginController.js是:

class LoginController {

    checkout(){
        return 'hello';
    }
}
export default LoginController

我想要导入'结帐'函数到我的测试文件中的变量,但到目前为止我只能导入该类。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您无法直接从类导入方法。如果要导入没有类作为中介的函数,则需要在类外部定义函数。或者,如果您真的想要checkout作为实例方法,那么您需要在实例上调用它。

这是一个源自您的示例文件:

export class LoginController {

    // Satic function
    static moo() {
        return "I'm mooing";
    }

    // Instance method
    checkout() {
        return "hello";
    }
}

// A standalone function.
export function something() {
    return "This is something!";
}

一个测试文件,它运行所有功能,根据您在问题中显示的文件进行调整:

const assert = require('chai').assert;

// Short of using something to preprocess import statements during
// testing... use destructuring.
const { LoginController, something } = require('./loginController');

describe('login Controller tests', function(){
    it('checkout', function(){
        // It not make sense to call it without ``new``.
        let result = new LoginController();
        // You get an instance method from an instance.
        assert.equal(result.checkout(), 'hello');
    });

    it('moo', function(){
        // You get the static function from the class.
        assert.equal(LoginController.moo(), 'I\'m mooing');
    });

    it('something', function(){
        // Something is exported directly by the module
        assert.equal(something(), 'This is something!');
    });
});