【发布时间】:2015-04-29 11:33:52
【问题描述】:
我想用 Jasmine 测试一个 Javascript 函数,它的结构如下:
showEditUser: function (...) {
// more code here...
var editUserView = new EditUserView();
// more code here...
editUserView.generate(...);
}
editUserView.generate() 导致错误。没关系,因为我不想测试它。但是如何防止它被调用呢?
EditUserView 是一个 RequireJS 模块,它扩展了另一个名为 BaseView 的模块。函数generate() 在BaseView 中定义。还有其他扩展 BaseView 的模块,我希望它们都不要在测试时调用生成。我怎么能用茉莉花做到这一点? spyOn(...).and.callFake() 似乎不可能,因为调用函数时我没有 editUserView 对象。有没有一种静态的方式告诉 Jasmine callFake() BaseView 中的函数 generate?
【问题讨论】:
-
我对 Jasmine 不熟悉,但使用 Sinon 我想有人会使用存根。 sinonjs.org/docs/#stubs
-
我认为 jasmine 只使用间谍。这和存根是一样的吗?我也认为用间谍解决这个问题是不可能的。
-
间谍与存根不同。间谍只观察对原始函数的调用,而存根将完全替换原始函数。我想你可以在 jasmine 中使用 sinon,但不知道会有多混乱。
标签: javascript testing requirejs jasmine spy