我正在为代码学校的一个项目进行单元测试,并.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) 我有一个函数返回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 上没有提到这个问题.
我有一个函数makeThings(n)返回一个Promise来创建n个项目(通过Sequelize).
有人建议我使用这种格式来检索值:
const [thing1, thing2] = yield makeThings(2);
我在网上找不到任何关于以这种方式分配常量/变量的内容.你见过这个吗?它是如何工作的?我的机器不喜欢它并吐出意外的令牌"["错误.
也许它可能是我不知道的npm包?
使用Node.js 5.1.0,ES6
javascript ×2
ecmascript-6 ×1
es6-promise ×1
java ×1
node.js ×1
postgresql ×1
sequelize.js ×1
unit-testing ×1