【发布时间】:2016-04-05 08:23:11
【问题描述】:
我遇到了我无法解释的行为。
根据使用 import 或 require,此测试成功 (import) 或失败 (require)。
如果失败,我有以下错误:
PhantomJS 2.1.1 (Windows 7 0.0.0) 不可变性 数字是不可变的 FAILED undefined 不是构造函数(评估 'expect((0, _immutable.List)([1])).toEqualImmutable((0, _immutable .List)([1]))')
代码如下:
import { Map, List } from 'immutable';
const expect = require("expect");
// import expectImmutable from "expect-immutable";
const expectImmutable = require("expect-immutable");
expect.extend(expectImmutable);
describe("immutability", () => {
describe("a number", () => {
function increment(currentState) {
return currentState + 1;
}
it("is immutable", () => {
expect(List([1])).toEqualImmutable(List([1]));
expect(Map({ a: 1 })).toEqualImmutable(Map({ a: 1 }));
let state = 42;
let nextState = increment(state);
expect(List([nextState])).toEqualImmutable(List([43]));
expect(List([state])).toEqualImmutable(List([42]));
});
});
});
有人对幕后发生的事情有解释吗?
【问题讨论】:
-
不管怎样,只要你在编译它——你为什么不检查
require和编译import的代码之间的区别(也将是require)? -
您可能正在寻找所需对象中的默认属性,请尝试
require("expect").default和require("expect-immutable").default
标签: javascript phantomjs ecmascript-6 require immutable.js