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);