标签: chai-immutable

当使用Karma运行时,使用Immutable.js的Mocha测试失败

这是一些背景.我正在使用用ES6编写的React和Immutable.js开发一个项目.我使用Babel和webpack.

我使用Mocha,Chai和jsdom编写了一些单元测试,因此可以在浏览器外执行.

问题是某些组件正在使用诸如需要图像之类的东西.这个东西由webpack通过特定的加载器处理.

因此,当在终端中运行测试时,由于这些未满足的要求,它们会失败.

我发现如何通过使用Karma解决这个问题(留下在浏览器之外运行测试的能力)并在运行测试之前编译源代码并使其成为webpack配置只是忽略图像加载器(使用null-loader).

那时,测试是通过Karma运行的,但是其中一些是失败的,而当它们通过终端运行时它们正在通过(我评论了那些有需求的行,只是为了测试的目的).

失败的测试都与Immutable.js有关,这意味着我正在尝试测试两个Immutable对象的相等性.

这是一个测试的例子:

it('handles SET_STATE', () => {
    const initialState = Map();
    const action = {
        type : 'SET_STATE',
        state : Map({
            vote : Map({
                pair : List.of('Trainspotting', '28 Days Later'),
                tally : Map({ 'Trainspotting' : 1 })
            })
        })
    };

    const nextState = reducer(initialState, action);

    expect(nextState).to.equal(fromJS({
        vote: {
            pair: ['Trainspotting', '28 Days Later'],
            tally: { 'Trainspotting': 1 }
        }
    }));
});
Run Code Online (Sandbox Code Playgroud)

失败就是这样的:

1) handles SET_STATE
     reducer
     AssertionError: expected { Object (size, _root, ...) } …
Run Code Online (Sandbox Code Playgroud)

mocha.js karma-mocha webpack immutable.js chai-immutable

5
推荐指数
1
解决办法
1800
查看次数

无法比较Immutable-js对象

我试图了解为什么我的简单柴(使用柴不可变)测试失败。

it('should work', () => {
   var currentState = Immutable.fromJS({
     name: 'myName',
     age: 20,
     friends: []
   });

   var newState = currentState.merge({
     name: 'someOtherName',
     age: 30
   });

   expect(newState).to.equal(Immutable.fromJS({
     name: 'someOtherName',
     age: 30,
     friends: []
   }));
});
Run Code Online (Sandbox Code Playgroud)
  • 如果我使用mergeDeep而不是merge-它仍然无法正常工作
  • 如果我比较期望值和实际值的.toJS()推算值(使用lodash isEqual),则可以...

我究竟做错了什么?我想我缺少了一些愚蠢的东西...

谢谢,阿米特。

javascript chai immutable.js chai-immutable

4
推荐指数
1
解决办法
1154
查看次数

ImmutableJS fromJS()和Map()"ownerID"不匹配

我正在使用chai-immutablenpm模块进行测试.这是测试:

it("runs the test", () => {
    const initialState = Map();
    const entries = ["entry"];
    const nextState = setEntries(initialState, entries);

    expect(nextState).to.equal(fromJS({
        entries : ["entry"]
    }));
});
Run Code Online (Sandbox Code Playgroud)

这是setEntries功能

export function setEntries(state, entries) {
    return state.set("entries", List(entries));
}
Run Code Online (Sandbox Code Playgroud)

npm test失败: 在此输入图像描述

这是什么ownerID?如何解决这个问题?

编辑:

我已经从头开始创建并重写了整个文件,但它确实有效.它与上一个文件完全相同.

仍然感兴趣为什么它发生....

javascript node.js chai immutable.js chai-immutable

2
推荐指数
1
解决办法
814
查看次数