【问题标题】:How to write Unit Test Case for javascript function with "document.write" in it如何为带有“document.write”的javascript函数编写单元测试用例
【发布时间】:2018-10-30 17:44:26
【问题描述】:

我有一个带有“document.write”的JavaScript函数,如下:

function sampleFunction(){  
document.write('hello world');  
}

并且,为此在 Jasmine 中写了一个单元测试用例,如下:

describe("testing function", function() {    
  it("should give output", function() {     
      expect(sampleFunction()).toBe('hello world');  
      expect(sampleFunction()).toContain('hello');   
  });  
    });

但是当我们使用 Karma 运行它时,它会打开一个网页,只在上面打印“hello world”,然后测试用例就会失败。

您能否建议为这个函数编写单元测试用例的正确方法是什么

非常感谢!

【问题讨论】:

    标签: javascript unit-testing jasmine karma-jasmine document.write


    【解决方案1】:

    单元测试通常最适合用于测试小型、易消化和纯功能性的代码片段。对具有内部状态的事物(例如每次调用某事物时递增的计数器)或需要访问外部 IO(例如写入文档)的事物使用单元测试要困难得多,这是您的情况。

    为了测试文档是否已准确更新,您可能需要考虑实施许多工程师已经开始称之为“端到端”测试的方法。 This 是一篇不错的媒体文章,提供了更多见解,尽管它并不是真正的权威来源。

    Karma,正如您可能已经了解的那样,是一种允许您在一个或多个浏览器中运行端到端测试的工具。您期望 sampleFunction 返回一个值,但您应该做的是测试文档的内容现在是 "hello world" 而不是之前的任何内容。 Here's 一篇不错但已经过时的文章,解释了如何做到这一点。

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多