当我更改应用程序代码时,我必须记住更改测试中的模拟函数
When I change my application code do I have to remember to change the mocked functions in my tests?
所以我正在单元测试我的User类,它会调用我的Database类。所以现在我有这个-
User.prototype.getUsername = function() {
user = Database.loadUser(1);
return user.username;
}
Database.prototype.loadUser = function(userId) {
// Load user data from the database
return {
username: loadedUser.username,
password: loadedUser.password,
age: loadedUser.age
};
}
因此,我模拟DatabaseloadUser()函数,以便将我的User测试与数据库层隔离开来。我让模拟的loadUser()函数返回一个与实际loadUser函数具有相同属性的对象-
MockDatabase.loadUser = function(userId)
return {
username: 'mockUsername',
password: 'mockPassword',
age: 1
};
}
所以这一切都很好。现在假设几天后我更改了数据库loadUser函数的属性,使其看起来像这样-
Database.prototype.loadUser = function(userId) {
// Load user data from the database
return {
firstNanme: loadedUser.firstName,
surname: loadedUser.surname
password: loadedUser.password,
age: loadedUser.age
};
}
现在,我的User类在测试过程中仍然使用MockDatabase.loadUser()函数作为mock,即使在实际程序运行时会出现异常,测试也会通过,因为真正的Database.loadUser函数不再具有"username"属性。
那么这个问题的解决方案是什么呢?我想这是一种非常常见的情况。我只需要记住始终保持模拟函数与真实函数同步吗?这似乎是一种效率很低、容易出错的做事方式。。?
在对实际loadUser函数进行更改之前,您应该更新您的测试loadUser函数。测试驱动开发不仅适用于首次编写代码的时间,还适用于您进行的任何后续更改
相关文章:
- 如何使用console.log语句在Mocha中测试函数
- 如何在Javascript中测试函数的相等性
- jQuery-有没有一种方法可以测试函数是否异步
- 未捕获的ReferenceError:未定义测试(函数)
- Javascript Mocha测试-测试函数表达式中的函数表达式
- 使用Jasmine测试函数内部的函数
- 如何控制台记录我传递到此测试函数中的每个参数
- jquery中的单元测试函数
- 在摩卡中使用请求调用测试函数
- 如何在 nodejs 中重用带有异步调用的测试函数
- 使用 javascript/jQuery 测试函数的数组
- JsTestDriver,测试函数的名称
- 茉莉花测试函数返回原生承诺
- 使用私有变量的茉莉花测试函数
- jquery测试函数运行不正常
- 模块中的单元测试函数
- 如何测试函数是否调用了特定的方法/函数
- jasmine测试函数,返回一个promise
- Karma-测试函数没有返回,也没有设置范围变量
- AngluarJS Protractor测试:函数应该返回一个promise