如何测试YUI3的get()方法返回的值

How to test values returned by get() method of YUI3?

本文关键字:方法 返回 get 何测试 测试 YUI3      更新时间:2023-09-26

我想模拟这样一个对象:

var target = new Y.Mock(),
    eventObject = {};
Y.Mock.expect(target, {
    method: 'get',
    args: ['actionId'],
    returns: 'edit'
});
Y.Mock.expect(target, {
    method: 'get',
    args: ['container'],
    returns: '<div></div>'
});
eventObject.target = target;

但是我得到一个错误:

Argument 0 of get() is incorrect.
Expected: container (string)
Actual: actionId (string)"

我怎样才能避免这种情况?

简要地看一下y.c mock代码,在我看来,您不能在同一个方法上使用相同的参数创建两个期望。后者将覆盖前者。

但是没关系,我们可以自己做一点嘲弄:

var mockedGet = function (args) {
    if (args === 'container') {
        return '<div></div>';
    } else if (args === 'actionId') {
        return 'edit';
    } else {
        YUITest.Assert.fail('Method get('+args+') should not have been called.');
    }
    // we could also verify call counts etc, using the mock object as 'this'
}
Y.Mock.expect(target, {
    method: 'get',
    args: [YUITest.Mock.Value.String], // accepts only one String
    run: mockedGet // replaces returns
});
工作的例子。