【发布时间】:2017-07-28 19:13:27
【问题描述】:
我正在用 mocha 和 chai(期望)构建一些测试。 在我学习测试方法的过程中保持简单。
我在配置文件中有一个 mysql 数据库层。 测试db参数,我遇到了一个奇怪的问题。
这些 db 参数测试正常:
host= 'localhost',
user='foo',
password='bar',
测试:
var expect = require('chai').expect;
var db = require('../db/config.ini');
describe('Database Access', function() {
it('HOST parameter should be a string', function() {
expect(host).to.be.a('string');
});
it('USER parameter should be a string', function() {
expect(user).to.be.a('string');
});
it('PASSWORD parameter should be a string', function() {
expect(password).to.be.a('string');
});
it('DB parameter should be a string', function() {
expect(db).to.be.a('string');
});
it('HOST parameter should equal localhost', function() {
expect(host).to.equal('localhost');
});
it('USER parameter should equal foo', function() {
expect(user).to.equal('foo');
});
it('PASSWORD parameter should equal bar', function() {
expect(password).to.equal('bar');
});
it('DB parameter should equal thatone', function() {
expect(context).to.equal('thatone');
});
});
当我添加要选择的数据库时,
db='thatone';
测试未通过参数,因为它将参数作为对象读取。
1) Database Access DB parameter should be a string:
AssertionError: expected {} to be a string
at Context.<anonymous> (test/db_tests.js:21:20)
如果我将变量名称更改为“上下文”,则测试会按预期通过。
我想知道使用“db”作为变量是否有明显的遗漏。
更新 真是愚蠢,新手级别的错误。 如此专注于学习测试方法,我没有意识到我已经创建了 'db' var 作为 'ini' 的要求,然后在稍后引用它,就好像它是唯一的一样。
真的很笨。不顾一切地匆匆忙忙到达目的地,却没有遵循一些好的方法。
【问题讨论】:
-
require('../db/config.ini')的结果是字符串吗? (提示:不是根据错误消息。)你不会想调用一些东西 elsedb因为(a)最后一个赢了,(b)它真的非常非常令人困惑.正如这个问题所强调的那样。 -
好的。好点子。也许“ini”文件不是这里最好的方法。我来自主要是 Unix 服务器背景。旧的技术理念仍在显现。
-
ini文件是否不相关(不是我要采取的方向,因为您可以只使用一个对象),问题在于隐藏现有参考。 -
嗯,是的,我没有忽略这一点。