describe("Company Controller", function() {
var apiUrl;
beforeEach(function(done) {
apiUrl = "http://localhost:3001";
done();
});
it('should register a client without error and return an API key', function(done) {
request({
uri: apiUrl + '/api/v1/company',
method: 'POST',
json: true,
form: {
name: 'My Company'
}
}, function(err, res, body) {
should.not.exist(err);
res.statusCode.should.eql(200);
body.status.should.eql('ok');
should.exist(body.company.api_key);
done();
});
});
it('should generate a new API key for a company', function(done) {
// NEED THE client_id generated in the previous test
});
after(function(done) {
Company.remove().exec();
done();
});
});
下次测试时如何获取client_id?
最佳答案
一般来说,进行带有副作用的测试是一种脆弱的做法。经常这样做,您将开始遇到一些非常难以调试的错误,即使每个测试都是独立运行的,您的测试套件也会失败,并且错误消息不会有任何帮助。理想情况下,每个测试都应该“离开营地”并保持与发现营地相同的状态。
如果你真的坚持这样做,你当然可以设置一个全局变量。其他一些选项包括:
合并两个测试。是的,这违反了一些人坚持的每次测试一次断言的原则,但我认为避免副作用原则胜过这一原则。
将注册放在beforeEach函数中。是的,通过这样做,您将在每次测试套件运行时注册多个客户端。这仍然是我的首选方法。
关于node.js - 如何编写 Mocha 测试,其中一个测试取决于下一个测试的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704206/