Javascript 使用唯一 ID 进行测试
Javascript Testing With Unique ID's
我对测试有点陌生 javascript,我想知道在生成唯一 ID 的情况下进行测试的最佳方法是什么。
编辑:
我真的不想测试 ID 我想确保在调用 createQuestion 函数时操作 returns 产生正确的结果。但是测试会失败,因为 ID 永远不会匹配,因为它是在函数中生成的。
我当前的代码如下所示。
//------- Action Creator --------//
export const createQuestion = function (inputType) {
const hasOptions = /radio/g.test(inputType);
return {
type: types.CREATE_QUESTION,
question: {
id: uuid.v1(),
priority: null,
title: null,
tip: null,
required: false,
isSaved: false,
hasOptions: hasOptions,
input: {
type: inputType,
options: []
}
}
};
};
//------- TESTS --------//
test('Question Actions', nest => {
nest.test('Create Question', function (assert) {
const msg = 'Questions was Created';
const question = {
id: 1,
priority: null,
title: null,
tip: null,
required: false,
isSaved: false,
hasOptions: false,
input: {
type: 'text',
options: []
}
};
const expectedAction = {
type: types.CREATE_QUESTION,
question
};
const actualAction = actions.createQuestion('text');
assert.deepEqual(actualAction, expectedAction, msg);
assert.end();
});
因为唯一 ID 是在 Action Creator 中生成的,所以不可能模拟,除非我在函数 returns 之后用动作更改 ID。
像这样
const changeUUID = obj => {
const newobj = {...obj};
newobj.question.id = 1;
return newobj;
};
除非您对具有特定值的 id 感兴趣,否则完全可以将其从 expectedAction
中排除。
assert.ok(actualAction.question.id);
delete actualAction.question.id;
assert.deepEqual(actualAction, expectedAction, msg);
我对测试有点陌生 javascript,我想知道在生成唯一 ID 的情况下进行测试的最佳方法是什么。
编辑:
我真的不想测试 ID 我想确保在调用 createQuestion 函数时操作 returns 产生正确的结果。但是测试会失败,因为 ID 永远不会匹配,因为它是在函数中生成的。
我当前的代码如下所示。
//------- Action Creator --------//
export const createQuestion = function (inputType) {
const hasOptions = /radio/g.test(inputType);
return {
type: types.CREATE_QUESTION,
question: {
id: uuid.v1(),
priority: null,
title: null,
tip: null,
required: false,
isSaved: false,
hasOptions: hasOptions,
input: {
type: inputType,
options: []
}
}
};
};
//------- TESTS --------//
test('Question Actions', nest => {
nest.test('Create Question', function (assert) {
const msg = 'Questions was Created';
const question = {
id: 1,
priority: null,
title: null,
tip: null,
required: false,
isSaved: false,
hasOptions: false,
input: {
type: 'text',
options: []
}
};
const expectedAction = {
type: types.CREATE_QUESTION,
question
};
const actualAction = actions.createQuestion('text');
assert.deepEqual(actualAction, expectedAction, msg);
assert.end();
});
因为唯一 ID 是在 Action Creator 中生成的,所以不可能模拟,除非我在函数 returns 之后用动作更改 ID。
像这样
const changeUUID = obj => {
const newobj = {...obj};
newobj.question.id = 1;
return newobj;
};
除非您对具有特定值的 id 感兴趣,否则完全可以将其从 expectedAction
中排除。
assert.ok(actualAction.question.id);
delete actualAction.question.id;
assert.deepEqual(actualAction, expectedAction, msg);