0

我使用 Knockout 编写了一个视图模型,例如:

@model Application.Models.PageModel

<script type="text/javascript">

    $(function () {

    var publishUrl = '@Html.Raw(Url.Action<Application.Controllers.PageController>(x => ...;

    var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model));

....

我的问题是如何仅针对 javascript 进行单元测试:javascript 取决于 - Html Helper (@Html.Raw...) 和 - @Html.Raw(...) 和 - Model

有人可以帮我吗?

4

1 回答 1

0

代码应该以可以进行单元测试的方式编写。在创建新的视图模型对象期间创建一个视图模型并将值传递给视图模型。

定义视图模型

function ViewModel(publishUrl, initialData)
{
   this.publishUrl=publishUrl;
   this.initialData=initialData;
}

创建视图模型对象并传入外部依赖项的值,这样您就可以通过传递模拟值来测试视图模型。

创建视图模型并传入外部依赖值

var _viewModel = new ViewModel (@Html.Raw(Url.Action<Application.Controllers.PageController>(x => ...), @Html.Raw(new JavaScriptSerializer().Serialize(Model)) )

如您所知,视图模型总是可以被淘汰。

ko.applyBindings(_viewModel)

您将一直在测试其中的 ViewModel 逻辑,因为它是松散耦合的,您应该能够传入任何您需要的值来测试 viewmodel 内部的逻辑。

于 2013-02-24T07:06:01.880 回答