Javascript 由单独模块导出的mocha测试返回值

Javascript 由单独模块导出的mocha测试返回值,javascript,node.js,mocha.js,nodeunit,Javascript,Node.js,Mocha.js,Nodeunit,我有一个RESTAPI,我的一个测试需要某些资源由另一个API创建。。。下面的示例演示了该模式。。问题是 这是摩卡咖啡的合适搭配吗 如果是这样,您会建议我如何将创建用户的ID放入我的帐户测试用例中 其他建议的方法 userTest.js exports.createAdminUser = function(done) { request.post( ... ); expect(res.location).to.eql(...); // Now I've created

我有一个RESTAPI,我的一个测试需要某些资源由另一个API创建。。。下面的示例演示了该模式。。问题是

  • 这是摩卡咖啡的合适搭配吗
  • 如果是这样,您会建议我如何将创建用户的ID放入我的帐户测试用例中
  • 其他建议的方法

    userTest.js
    
    exports.createAdminUser = function(done) {
        request.post( ... );
        expect(res.location).to.eql(...);
        // Now I've created an admin user
    };
    
    describe('User Tests', function() {
    
        it('creates an admin user', createAdminUser);
        it('modifies the admin user', ...);
        ...
    }
    
  • 这是我对帐户的另一个测试,它必须有一个用户设置。我不想为每种类型的依赖测试再次做这项工作

    Accounts Test
    -------------
    
    var userTests = require('../users/userTest.js');
    
    describe('Account Tests', function() {
    
        it('creates an admin user to prime the database', userTests.createAdminUser);
    
        it('creates a checking account', function(done){
            // Here I need to know the ID of the admin user to use in my POST req.
        });
    }
    

    尝试在mocha文档中查找beforeach()和beforeach()和
    afterEach
    。由于这是一个REST API,请尝试使用
    supertest
    模块来发出http请求并测试整个过程。我现在正在使用superagent发出请求。。我会调查超级测试。因此,我可以使用beforeach()在另一个测试中执行那些create方法,但我希望访问它们的变量(例如创建的ID,以便我可以使用它们)。。。在其他测试中,这些都是在测试方法之外捕获的,作为全局变量,但我无法访问导出模块中的变量。这更容易,因为它有
    .expect()
    用于断言,而
    .end(fn)
    用于进一步处理http请求的响应。不需要导出全局变量和其他东西。。通常在RESTAPI中,ID也暴露于响应体。因此,您可以从那里开始工作。ID确实在响应主体(和位置)中,因此我的testA模块在运行时获取ID,但我需要在testB中使用该变量(在上面的示例中。如果ID是在userTests.createAdminUser中捕获的,则为其定义的函数(“创建一个检查帐户”,函数(完成)将无法访问该ID这些应该是RESTAPI调用,而不是代码调用。每个请求都可以执行多个操作并输出响应。您可以在回调中构造测试请求以实现结果。