这个答案已经过时了——NSubstitute 现在直接支持这个。有关更多信息,请参阅@dangerdex对此问题的回答。
NSubstitute 中的多重返回语法仅支持值。要同时抛出异常,您需要将一个函数传递给Returns,并自己实现所需的逻辑(例如Returns(x => NextValue()))。
Haacked 的博客上有一个使用队列的 Moq 序列的相关示例。您可以使用 NSubstitute 做类似的事情(仅示例代码,使用风险自负:)):
public interface IFoo { int Bar(); }
[Test]
public void Example() {
    var results = new Results<int>(1)
                    .Then(2)
                    .Then(3)
                    .Then(() => { throw new Exception("oops"); });
    var sub = Substitute.For<IFoo>();
    sub.Bar().Returns(x => results.Next());
    Assert.AreEqual(1, sub.Bar());
    Assert.AreEqual(2, sub.Bar());
    Assert.AreEqual(3, sub.Bar());
    Assert.Throws<Exception>(() => sub.Bar());
}
public class Results<T> {
    private readonly Queue<Func<T>> values = new Queue<Func<T>>();
    public Results(T result) { values.Enqueue(() => result); }
    public Results<T> Then(T value) { return Then(() => value); }
    public Results<T> Then(Func<T> value) {
        values.Enqueue(value);
        return this;
    }
    public T Next() { return values.Dequeue()(); }
}
希望这可以帮助。