toThrow检查数组的不可更改性

时间:2018-06-26 09:00:40

标签: javascript unit-testing protractor jestjs immutable.js

提示,如何检查阵列?在最终结果中,测试应检查数组是否已更改,如果是,则给出无法更改的错误。

import { List, Set } from "immutable"
export let list1: number[] = [1, 2, 3];

export function mass(list1) {
   let listFromArray = List(list1); 
    if (listFromArray == List(list1)) {
      throw new Error("immutable");
    }
        return listFromArray; 
  };

测试代码:

import {mass} from "./sum"
import { List, Set, isImmutable } from "immutable"

test('check for variability', () => {
  const list1: number[] = [1, 2, 3];
  const listFromArray = mass(list1);
  const expectedResult = List([1, 2, 3]);
  expect(expectedResult).toThrowError('Error'); 
});

1 个答案:

答案 0 :(得分:0)

认为,您正在寻找数组比较。

对于该场景,您可以比较数组中的项目。

有很多有用的方法可以做到这一点,其中一种就是使用every方法:\

var arr_1 = [1,2,3];
var arr_2 = [1,2,3];

if(arr_1.every((v,i) => v === arr_2[i])){
  alert("si");
}
else{
    alert("no")
}

当然,这并不是经过优化的,因为您可能希望在手出局之前先检查一下长度等。

相关:How to compare arrays in JavaScript?

https://jsfiddle.net/tspqeyz3/

对于immutable.js,有一个equals方法将检查值的映射。 (NodeJS示例)

const { Map, is } = require('immutable')
const map1 = Map({ a: 1, b: 2, c: 3 })
const map2 = Map({ a: 1, b: 2, c: 3 })
map1 !== map2     // two different instances are not reference-equal
map1.equals(map2) // but are value-equal if they have the same values
is(map1, map2)    // alternatively can use the is() function

因此,在这种情况下,您应该能够识别两者的相等性。