当前位置: 首页 > 知识库问答 >
问题:

YUI。测试断言在事件的回调中不会失败

长孙明知
2023-03-14

我用的是3.4.0版

我对YUI有一个奇怪的问题。测试断言。下面是一个示例:

YUI().use('test', 'node', 'node-event-simulate',
    function(Y) {
        var runner = Y.Test.Runner;

        var someTestCase = new Y.Test.Case({
            name    : 'SomeMeaningfulName',

            setUp       : function() {
                var test = this;

                // create show details link
                test.Y$aLink    = Y.Node
                                    .create('<a href="//some.fake.url.ie">Show details</a>');

                Y.one('body')
                    .append(test.Y$aLink);                        
            }, 

            tearDown    : function() {
                this.Y$aLink.remove();
            },

            testEventListener : function() {
                var test = this;

                test.Y$aLink
                    .on('click', function(e) {
                        e.preventDefault();

                        // this codes works
                        console.log('on click event');

                        // this one doesn't fail
                        // it "works" perfectly when it's outside of the callback
                        Y.assert(false, 'false is true');
                    });

                test.Y$aLink.simulate('click');
            }
        });

        runner.add(someTestCase);
        runner.run();
    });

当断言在事件的回调中时,它永远不会失败:(文档中没有提到这种情况...

也许我做错了什么,但是缺少文档很难确定...

更新

没有等待/恢复的示例:http://jsfiddle.net/op1ekun/Fgra6/2/

和具有等待/恢复 http://jsfiddle.net/op1ekun/Fgra6/5/

更新2

已经报告了类似的情况,它涉及异步测试问题,但这并不是我的问题:http://yuilibrary.com/projects/yuitest/ticket/74

更新3

这似乎正是我正在经历的,看起来是Billy已经提出的解决方案,有趣的是使用依赖注入,这可能值得一试:http://csausdev . WordPress . com/2011/02/12/unit-testing-callbacks-with-yui-test/

请帮忙!谢谢!

共有1个答案

阮华美
2023-03-14

YUI测试有一个等待和恢复机制,你可以在这种情况下利用。您告诉它等到调用 resume 方法,并且 resume 方法会进行回调,您可以在其中安全地进行断言。在你的情况下,它看起来像这样:

'test event listener': function () {
  var test = this;

  test.Y$aLink.on('click', function (e) {
    e.preventDefault();

    test.resume(function () {
      Assert.fail('ouch!');
    });
  });

  test.wait();
  test.Y$aLink.simulate('click');
}
 类似资料:
  • 当我尝试执行一个新的单元测试用例时,它会显示以下错误。 注意:我没有特权设置路径,因为我已经将chrome web驱动程序放在D驱动器中。 测试在14:56开始。。。C:\Users\xxx.xxxx\PyCharm项目\Automation\venv\Scripts\python.exe“C:\Users\xx.xxx\AppData\Local\JetBrains\PyCharm社区版2019

  • 迁移工作得很好,但事务根本不起作用。 我尝试公开我的设置: 运行在docker容器中的MariaDB 10.1(我已经证明了测试中使用的所有表都在InnoDB中,因此支持事务处理) 基测试类正在使用 我尝试了一个单独的连接与一起进行测试,并使用默认连接进行测试。事务也不起作用

  • 我使用assertJ,在我的测试用例中有多个assertThat断言。当第一个断言失败时,测试就完成了,但我不希望这样。我想知道测试用例单次执行后所有失败断言的信息。有什么办法可以做到吗?我在这里找到了SoftAssertions的解决方案->http://joel-costigliola.github.io/assertj/assertj-core-features-highlight.html

  • 我已经在Netbeans上通过JS测试驱动程序设置了JavaScript单元测试。然而,与该教程中的结果不同,断言失败后不会执行更多测试。我怎样才能改变这种行为? 例如,给定此测试文件: 文件: 进度条显示50%,(2次测试),应该是33%。 文件: 我可以通过命令行运行所有测试。(在Windows PowerShell上)。按如下方式运行,失败后测试不会停止运行: java-jar$env: J

  • 问题内容: 我有一个Jenkins作业,它通过Nightwatch.js框架在Browserstack上运行Selenium测试。我们有一套完整的测试程序,可以让守夜人在不同的进程中运行,并且我们需要一种在所有测试运行后将通过/失败值返回给Jenkins的方法。 我一直在尝试使用Nightwatch挂钩在每个模块的末尾运行一段代码,但是我无法弄清楚需要采取什么措施才能使Jenkins作业可以访问该

  • 问题内容: 当Windows上的Visual C ++断言失败时,调试器将停止,显示消息,然后让您继续(或者,如果未运行调试会话,则为您启动Visual Studio)。 在Linux上,assert()的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏进行,因此我尝试使用信号来解决此问题,例如 但是,尽管GDB(通过KDevelop)停在了正确的位置,但我似乎无法继续过去,并且在GDB