小编the*_*lla的帖子

为什么.equals()在比较两个对象时会导致断言错误...但有时只会?

我正在为代码学校的一个项目进行单元测试,并.equals()给我一些麻烦.在我的项目中,.save()保存到SQL数据库中.此代码通过了单元测试:

@Test
public void save_assignsNameToObject() {
  Restaurant testRestaurant = new Restaurant("PokPok","503-444-4444");
  testRestaurant.save();
  Restaurant savedRestaurant = Restaurant.all.get(0);
  assertEquals(savedRestaurant.getName(), "PokPok");
}
Run Code Online (Sandbox Code Playgroud)

但是如果我将最后一行更改为以下内容,则会导致断言错误:

assertTrue(savedRestaurant.equals(testRestaurant));
Run Code Online (Sandbox Code Playgroud)

我调试使用System.out.println()来验证两个值都在testRestaurant".equal"中的相应值savedRestaurant.以下单元测试(对于另一个非常相似的类的对象)使用以下.equals()方法:

@Test
public void save_assignsIdToObject_true() {
  Cuisine testCuisine = new Cuisine("Mexican");
  testCuisine.save();
  Cuisine savedCuisine = Cuisine.all().get(0);
  assertTrue(savedCuisine.equals(testCuisine));
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的源代码.equals():

@Override
public boolean equals(Object otherRestaurant) {
  if (!(otherRestaurant instanceof Restaurant)) {
    return false;
  } else {
    Restaurant newRestaurant = (Restaurant) otherRestaurant;
    return this.getId() == new Restaurant.getId() …
Run Code Online (Sandbox Code Playgroud)

java postgresql unit-testing

6
推荐指数
1
解决办法
2257
查看次数

具有多个变量类型的ES6解构赋值

我有一个函数返回5个对象,我想声明其中4个使用const,其中1个使用let.如果我想要使用const我声明的所有对象可以:

const { thing1, thing2, thing3, thing4, thing5 } = yield getResults();
Run Code Online (Sandbox Code Playgroud)

我目前的解决方法是:

const results = yield getResults();

const thing1 = results.thing1;
const thing2 = results.thing2;
const thing3 = results.thing3;
const thing4 = results.thing4;

let thing5 = results.thing5; 
Run Code Online (Sandbox Code Playgroud)

但我想知道解构分配是否允许你更优雅地做到这一点.

就我所知,在MDN或stackoverflow 上没有提到这个问题.

javascript ecmascript-6

5
推荐指数
2
解决办法
553
查看次数

如何使用一个声明生成多个常量

我有一个函数makeThings(n)返回一个Promise来创建n个项目(通过Sequelize).

有人建议我使用这种格式来检索值:

const [thing1, thing2] = yield makeThings(2);

我在网上找不到任何关于以这种方式分配常量/变量的内容.你见过这个吗?它是如何工作的?我的机器不喜欢它并吐出意外的令牌"["错误.

也许它可能是我不知道的npm包?

使用Node.js 5.1.0,ES6

javascript node.js sequelize.js es6-promise

3
推荐指数
1
解决办法
774
查看次数