QUnit - formatter.js 之外的文件测试功能
QUnit - Testing functions of files besides formatter.js
UI5给出的测试格式化函数的例子,即
// Assert
assert.strictEqual(fnIsolatedFormatter("A"), "New", "The long text for status A is correct");
assert.strictEqual(fnIsolatedFormatter("B"), "In Progress", "The long text for status B is correct");
assert.strictEqual(fnIsolatedFormatter("C"), "Done", "The long text for status C is correct");
assert.strictEqual(fnIsolatedFormatter("Foo"), "Foo", "The long text for status Foo is correct");
效果很好,但是,将相同的测试应用于控制器文件的功能,即 Example.controller.js
,会产生 error
。
通过尝试测试 Example.controller
的 _onTestFunction
,我确实得到了以下 error
:
TypeError: Example._onTestFunction is not a function
问题:我如何测试不是 formatter
的控制器文件的功能?
要测试控制器,您需要实例化一个:
let controllerUnderTest = new Controller(...)
。如果 Controller 有任何依赖关系(通常是这种情况),则需要模拟这些依赖关系。为此,请使用 sinon
等框架。然后您可以在每个测试中指定这些模拟的行为方式。实例化控制器后,您可以执行方法并添加断言。
在你的情况下,看起来你试图调用 _onTestFunction
不是在对象上,而是在控制器的“定义”上。这不包含预期的方法,并导致错误。
UI5给出的测试格式化函数的例子,即
// Assert
assert.strictEqual(fnIsolatedFormatter("A"), "New", "The long text for status A is correct");
assert.strictEqual(fnIsolatedFormatter("B"), "In Progress", "The long text for status B is correct");
assert.strictEqual(fnIsolatedFormatter("C"), "Done", "The long text for status C is correct");
assert.strictEqual(fnIsolatedFormatter("Foo"), "Foo", "The long text for status Foo is correct");
效果很好,但是,将相同的测试应用于控制器文件的功能,即 Example.controller.js
,会产生 error
。
通过尝试测试 Example.controller
的 _onTestFunction
,我确实得到了以下 error
:
TypeError: Example._onTestFunction is not a function
问题:我如何测试不是 formatter
的控制器文件的功能?
要测试控制器,您需要实例化一个:
let controllerUnderTest = new Controller(...)
。如果 Controller 有任何依赖关系(通常是这种情况),则需要模拟这些依赖关系。为此,请使用 sinon
等框架。然后您可以在每个测试中指定这些模拟的行为方式。实例化控制器后,您可以执行方法并添加断言。
在你的情况下,看起来你试图调用 _onTestFunction
不是在对象上,而是在控制器的“定义”上。这不包含预期的方法,并导致错误。