gpt4 book ai didi

javascript - 有人可以提供一个使用 jsTestDriver.js 的断言异常的非常简单的完整示例吗

转载 作者:行者123 更新时间:2023-11-28 02:37:30 27 4
gpt4 key购买 nike

我有深厚的 C# 背景,目前正在通过使用 Knockout.js 和 JavaScript 学习 ASP.NET MVC。我是一个非常注重 TDD 的人,并且遇到了一些我似乎正在努力解决的障碍。我已经阅读了 jsTestDriver 的许多示例,在进行测试之前,所有这些示例似乎都相当简单......

基本上,我尝试进行单元测试(使用 JetBrains WebStorm 5.0.4 与 JsTestDriver 结合使用)是一个简单的断言,即在满足特定情况时抛出异常。这应该很简单吧?

我的实际测试用例在 jsTestDriver 中如下所示(已删除任何底层基本代码并仅在单元测试函数本身中引发异常):

GridControllerTest.prototype.testBasicExceptionType = function () {

assertException(function() {
throw "InvalidDataSourceException";
}, "InvalidDataSourceException");

};

哪个测试用例断言我的函数抛出异常“InvalidDataSourceException”,不是吗?最初我尝试使用声明类型的函数:

function InvalidDataSourceException (){}

GridControllerTest.prototype.testBasicExceptionType = function () {

assertException(function() {
throw new InvalidDataSourceException();
}, "InvalidDataSourceException");

};

任何人都可以指出对我来说显而易见的事实,并告诉我为什么我无法通过如此简单的测试吗?我是否误解了单元测试函数的结构?

最佳答案

区别在于,在第一个示例中,您抛出一个字符串,而在第二个示例中,您抛出一个对象。 JavaScript 中的对象没有与之关联的规范名称,主要是因为没有类型系统(只有原型(prototype))。在第二个示例中,函数被分配给 window.InvalidDataSourceException,但函数对象本身没有名称。特别是,没有默认反射来获取名称或等效的 toString() 来获取规范值。

就我个人而言,我完全放弃使用assertException,因为由于这种原因它太脆弱了。我开始使用 try-catch block 。我在 try block 的末尾调用了 failed() ,因为预计到那时会抛出异常,并且我在 catch block 中放置了另一个测试点,以确保异常符合预期。在我看来,这是一个更好的测试模式,因为它将控制更改的测试与控制更改原因的测试分开。

关于javascript - 有人可以提供一个使用 jsTestDriver.js 的断言异常的非常简单的完整示例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com