Jasmine-如何为具有命名属性和对象的数组编写测试

时间:2018-12-05 09:45:27

标签: angularjs jasmine karma-jasmine

由于使用Javascript,我今天遇到了一个奇怪的情况。我有一个看起来像这样的对象。

$scope.main = [{main : 1},service:true];

现在,当我尝试在茉莉花测试用例中将其等同于Objects时:

expect($scope.main).toEqual([{main : 1},service:true]);

这给我一个错误:

Unexpected Token.

奇怪的是,这是Javascript的有效对象。但是茉莉花无法接受。

有什么办法可以测试吗?

谢谢!

编辑:附加结构屏幕截图。

structure image

1 个答案:

答案 0 :(得分:1)

更新

基于您的屏幕截图,我现在看到您正在分多个步骤创建main对象。我将其简化为以下内容:

var main = [{main: 1}];
main.service = true;

在开发工具中,您看到main看起来像这样:[{main: 1}, service: true]

但是,请不要误导。 Dev-tools向您展示了一个仅旨在提供信息的结构。您实际上无法在JavaScript的一行中创建该结构,因为该结构无效。您必须像创建一样,通过多个步骤来创建它。

这就是为什么当您尝试在一行中的测试中创建它时,出现Unexpected Token.错误的原因。在测试中,您必须以与创建main对象相似的方式来创建期望的对象。例如:

var expected = [{main: 1}];
expected.service = true;

expect(main).toEqual(expected);