【问题标题】:How to test values returned by get() method of YUI3?如何测试 YUI3 的 get() 方法返回的值?
【发布时间】:2014-08-12 08:26:39
【问题描述】:

我想像这样模拟一个对象:

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)"

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

【问题讨论】:

    标签: javascript unit-testing mocking yui yui3


    【解决方案1】:

    简单地看一下Y.Mock code 代码,在我看来,您无法使用相同的参数在同一个方法上创建两个期望。后者覆盖第一个。

    不过没关系,我们可以自己嘲讽一下:

    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
    });
    

    Working example.

    【讨论】:

    • 非常感谢。我创建了一个类似的解决方案,但没有调用 fail() 方法。你的版本比我的好。
    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多